社区
ATL
帖子详情
GDI+绘图activex控件,使用它时自己无法刷新!!!
ZouMorn
2009-01-10 09:55:42
GDI+做的一个绘图ActiveX控件ocx,控件窗口上贴一个窗口(称为画布窗口,其实就是控件的一个子窗口),并在画布窗口上使用 gdi+ 绘图。
控件运行时会启动一个线程,以一定的频率更新画布窗口。
问题:当控件更新频率太高时(每秒30次),客户端窗口(使用者)的一些控件无法刷新,现象如下:
大部分窗口无法更新,退出弹出提示框时无法显示(按alt键即可显示出来)等。。。
请教如上问题如何解决!!!控件更新频率较低时,工作正常
...全文
369
13
打赏
收藏
GDI+绘图activex控件,使用它时自己无法刷新!!!
GDI+做的一个绘图ActiveX控件ocx,控件窗口上贴一个窗口(称为画布窗口,其实就是控件的一个子窗口),并在画布窗口上使用 gdi+ 绘图。 控件运行时会启动一个线程,以一定的频率更新画布窗口。 问题:当控件更新频率太高时(每秒30次),客户端窗口(使用者)的一些控件无法刷新,现象如下: 大部分窗口无法更新,退出弹出提示框时无法显示(按alt键即可显示出来)等。。。 请教如上问题如何解决!!!控件更新频率较低时,工作正常
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chewy_2008
2010-09-14
打赏
举报
回复
请问一下lz
雷达的界面必须用ActiveX来做么?。。。
Holly
2009-03-10
打赏
举报
回复
[Quote=引用 11 楼 ZouMorn 的回复:]
多谢。已解决,就是在内存中画,而不要Invalidate走WM_PAINT。
内存中也不要异步画(不知道为什么异步画图导致雷达旋转特别慢),用的时线程给自己PostMessage,然后同步画的。
不能用 CPaintDC 哦,要用 CClientDC
再次感谢。
[/Quote]
经实验,使用GDIPlus的时候要特别注意使用CPaintDC中的HDC来绘制,否则子窗口得不到绘制消息。
不能使用Graphics (HWND)的方式来创建,必须使用
CPaintDC dc(this);
Graphics graph(dc.GetSafeHdc());
这样的话,子窗口才能够得到绘制的消息。
ZouMorn
2009-01-12
打赏
举报
回复
多谢。已解决,就是在内存中画,而不要Invalidate走WM_PAINT。
内存中也不要异步画(不知道为什么异步画图导致雷达旋转特别慢),用的时线程给自己PostMessage,然后同步画的。
不能用 CPaintDC 哦,要用 CClientDC
再次感谢。
Tinary3v0
2009-01-11
打赏
举报
回复
pCanvasWnd->Invalidate()的问题 用内存绘图试试。
ZouMorn
2009-01-11
打赏
举报
回复
多谢楼上的分析,我的和你所说实现非常类似。个人觉得没有刷新错窗口,以及没有资源泄露等。
CAxCtrl 的 OnDraw 是没有做任何事情的,Canvas 画布窗口在自己失效后的 OnDraw 上才会画出数据(gdi+在内存中创建image, 然后DrawImage贴出来)。
定时刷新为了达到一定的实时性,我用的是后台线程,准确的时间去使画布窗口无效,pCanvasWnd->Invalidate() ...
问题是:我的雷达更新率达到30fps(1秒钟一周,每步走10度)的时候就会导致其他控件明显无法刷新了。距离我的60+fps的目标还有差距
Tinary3v0
2009-01-11
打赏
举报
回复
我想楼主是在定时的时候刷错窗口了
这样的ActiveX 不用总是调用整个控件的Invalidate或者InvalidateCtrl这类整个窗口刷新的函数。
难道调用的时候不觉得闪么?
假设你窗口的结构如下 CAXCtrl ----> CCanv ;CAXCtrl为ActiveX对应的Ctrl类 CCanv是内部画布
;CAXCtrl为CCanv的父窗口
假设你的绘图在CCanv类里面完成 那取DC的时候应该取得是CCanV窗口的的DC 定时也应该在CCanv类中定时。
即便是在OnTimer中使用Invalidate也不会造成 CAXCtrl的刷新 更不会造成上面的listctrl也刷新
并不是要刷新整个控件才能完成你绘图的刷新。
而且你可以在OnTimer中使用内存绘图的方法 那样连CCanv窗口的Invalidate都省去了。
如果你把OnTimer定义在了CAXCtrl中 我想操作起来肯定很麻烦 因为这时正确的做法是父类要取用子类的DC
并在子类窗口上绘图。想都不敢想 麻烦死了。
另外 GDI+在绘图的时候 一般不用使用指针就可以完成 GDI+的资源回收应该不成问题。
ZouMorn
2009-01-10
打赏
举报
回复
问:gdi+的线程占用资源过高,如何在每次自己刷新的时候,给主窗口一次刷新的机会呢?
ZouMorn
2009-01-10
打赏
举报
回复
但是,你输入一个 alt 键,界面会立即刷新,而且这个键也会及时的相应。
如果无法及时刷新,那有什么好的办法解决吗?那个绘图的已经是异步模式了
oyljerry
2009-01-10
打赏
举报
回复
感觉系统来不及刷新....
ZouMorn
2009-01-10
打赏
举报
回复
另:不是完全无法工作。其实大部分按钮、下拉框等都可以工作。就是偶尔无法刷新。
例如 listctrl 就无法刷新其项目。有时候按钮会消失,然后要多次手工刷新才会出来。
我判断,是否:系统自己绘制窗口时遇到了失败?
oyljerry
2009-01-10
打赏
举报
回复
查看一下你的程序运行的时候任务管理器中各种资源的消耗 ,GDI句柄等
ZouMorn
2009-01-10
打赏
举报
回复
此控件是一个雷达之类的控件。一秒钟扫描一圈,每一步10度左右就不行了(即一秒钟更新36次),每步60度效果太差:(
感觉机器性能不可能无法解决这个问题呀,是否是我的gdi+程序编写的有问题?异步绘图,怎么会影响到主窗口呢?
疑问:主窗口退出的时候弹出一个提示框,没有任何显示(即提示框看不见),但是按alt就可以立即显示出来。gdi+绘图资源用尽是怎么回事呢
oyljerry
2009-01-10
打赏
举报
回复
频率太高,是不是GDI等资源消耗太快...
MFC_
ActiveX
_GD+
这是一个基于mfc编写的用
GDI+
绘图
的
ActiveX
控件
程序。是一个很好的帮助新老程序员开始
ActiveX
和
GDI+
综合变成之旅的开始。欢迎下载!
用VS2008 ATL开发可以显示Gif的
ActiveX
控件
源码.rar
VS2008+ATL开发Gif的
ActiveX
控件
(毛坯) 创建一个空的解决方案,名称GifSolution。将来包含
控件
项目和测试项目。新建项目,弹出的对话框中选ATL项目,名称为GifAnimate确定。弹出的对话框中选择DLL服务器(可选允许合并代理存根,这样不会产生代理dll),完成后编译,这样工程框架就完成了。 组件分有窗口的和无窗口的,这里应该用有窗口的,所以添加组件的
时
候,外观不要基于none,最好基于CStatic。因为gif是动态的,应该用另一个线程绘制,这样不影响主线程响应消息,
绘图
更加流畅。 为GifAnimate项目添加类-选择ATL
控件
,点击添加,弹出对话框。 1.本文只是举例说明开发过程,抛砖而已。 2.样例只是框架,不能直接
使用
,所有代码没有经过测试 3.样例接收器GifSink和属性页卡片没有完成,懒了,呵呵 4.样例背景等很多属性没有实现 5.
使用
了GDI ,但GDI 的Image类的SetActiveFrame函数有问题,网上貌似没有解决办法。Debug版本不影响
使用
,Release版本没有测试。如果有兴趣,可以
使用
IPicture接口,网上很多。
Simple! Web Signature Control
开发目的 目前市场上有不少可以给Office文档签名的
控件
,但可对HTML文档签名的确不多,而且都需要一定的费用才可以
使用
,开发此
控件
的目的主要有以下几点1,作者对嵌入浏览器的
ActiveX
Control相关技术的学习2,为需要此类
控件
的公司及个人提供一个可持续开发的基础框架3,借助此平台更好的学习各类电子签章技术 技术说明及特点 开发环境:vc++.net 2003 开发平台:windows 2003 server测试平台:windows xp ie6.0区别于其他html电子印章
控件
,WebSignCtrl采用了Windowless窗体,使
控件
被拖动
时
无闪烁现象,
使用
GDI+
绘图
,并且控制与显示均在一个控内实现,提高了
控件
整体性能,页面中
使用
Javascript来响应及操作
控件
的事件及方法,方便二次开发 声明 此项目为开源项目,不收取任何费用,除本站发布的版本之外,版本均归开发者所有作者有权选择代码提供对象,目的是将该项目提供给更需要它且能将它继续发展的用户。 合作开发联系方式 项目并非成熟项目,代码和技术难免有瑕疵和技术欠缺,请看过演示后再与我们联系联系方式 :ningze811218@hotmail.comQQ联系 : 5392402 (请注明:WebSignCtrl)MSN联系:ningze811218@hotmail.com 有什么问题可以到 http://simple.okbt.net 技术讨论区提出
Visual C++2010开发权威指南(共三部分).part1.rar
第一部分 Visual C++ 2010开发与新特性 第1章 Visual C++ 2010开发环境简介 1 1.1 Visual C++ 2010简介 1 1.2 Visual C++ 2010下载安装指南 1 1.3 Visual C++ 2010主要特点与新特性 3 1.4 Visual C++ 2010开发环境操作指南 6 1.4.1 创建Visual C++应用程序 6 1.4.2 Visual C++ 2010菜单介绍 9 1.5 Visual C++ 2010 MFC简介 12 1.6 Visual C++ 2010 clr简介 13 1.7 Visual C++ 2010 64位编程 14 1.8 支持新的C++语言标准 14 1.8.1 支持新的C++语言标准(C++ 0x) 14 1.8.2 Lambda表达式 15 1.8.3 静态断言static_assert 17 1.8.4 auto关键字 18 1.8.5 右值引用 19 1.8.6 安全数据类型 22 1.8.7 移动构造 23 1.9 支持开发并行程序 26 1.9.1 运行库支持native代码 26 1.9.2 调试和分析工具 29 1.10 对MFC的增强 31 1.10.1 任务对话框CTaskDialog 31 1.10.2 重启管理器(Restart Manager)支持 33 1.10.3 支持新的用户界面风格 34 第2章 MFC应用程序框架 37 2.1 用MFC向导生成应用程序 37 2.1.1 生成的程序框架 37 2.1.2 生成的应用程序类型 43 2.1.3 向导生成工程文件简介 46 2.2 应用程序框架分析 46 2.2.1 框架简介 47 2.2.2 MFC应用程序运行流程 50 2.2.3 应用程序窗口 51 2.2.4 消息机制与消息循环 59 2.3 文档与视图 65 2.3.1 文档类结构分析 65 2.3.2 视图类结构分析 65 2.3.3 文档与视图的关系 67 2.3.4 sdi应用程序分析 69 2.3.5 mdi应用程序分析 69 2.4 工具栏与状态栏 69 2.4.1 工具栏 70 2.4.2 状态栏 78 2.5 MFC新功能——Office 2007风格程序分析 85 2.6 MFC新功能——Visual Studio风格程序分析 90 2.7 MFC新功能——Windows资源管理器风格程序分析 98 2.8 应用程序框架类对象分析 100 2.8.1 视图类对文档类的调用 100 2.8.2 在框架类中获得当前的文档类和视图类对象指针 101 2.8.3 获得应用程序类对象的指针 101 2.8.4 从应用类对象中获得主框架类对象的指针 101 2.9 小结 102 第3章 Visual C++ 2010 MFC菜单编程 103 3.1 菜单编程 103 3.1.1 创建菜单 104 3.1.2 创建菜单热键 115 3.1.3 标记菜单 115 3.1.4 给菜单加入图标 119 3.1.5 禁用菜单 121 3.1.6 移除与加载菜单 127 3.2 菜单消息的传输机制 129 3.2.1 菜单消息的分类 129 3.2.2 菜单消息的传输路由 129 3.3 动态菜单操作 131 3.3.1 添加菜单 131 3.3.2 插入菜单 133 3.3.3 删除菜单 135 3.3.4 插入菜单的命令响应 136 3.3.5 修改菜单 137 3.4 小结 140 第4章 Visual C++ 2010 MFC对话框编程 141 4.1 对话框简介 141 4.1.1 对话框的
控件
简介 141 4.1.2 对话框的种类简介 149 4.1.3 设计对话框 150 4.2 创建与销毁对话框 153 4.2.1 模态对话框 153 4.2.2 非模式对话框 159 4.2.3 属性页对话框 163 4.3 消息对话框 173 4.4 通用对话框 175 4.4.1 文件打开对话框 176 4.4.2 文件保存对话框 178 4.4.3 颜色对话框 179 4.4.4 字体对话框 181 4.4.5 查找对话框 183 4.4.6 页面设置对话框 185 4.4.7 打印对话框 186 4.5 小结 187 第5章 Visual C++ 2010 MFC对话框
控件
188 5.1 Visual C++ 2010 Button
控件
简介与开发 191 5.2 Visual C++ 2010 List Box
控件
简介与开发 193 5.3 Visual C++ 2010 Com boBox
控件
简介与开发 195 5.3.1 创建扩展组合框
控件
196 5.3.2 在扩展组合框
控件
中
使用
5.3.2 图像列表 197 5.3.3 设置各项的图像 197 5.3.4 处理扩展组合框
控件
中的通知消息 198 5.4 Visual C++ 2010 List
控件
简介与开发 198 5.4.1 列表
控件
和列表视图 199 5.4.2 列表项和图像列表 199 5.4.3 回调项和回调屏蔽 200 5.4.4 创建列表
控件
200 5.4.5 创建图像列表 201 5.4.6 向
控件
添加列(报表视图) 204 5.4.7 向
控件
添加项 205 5.4.8 在列表
控件
中滚动、排列、排序和查找 205 5.4.9 在列表
控件
中实现工作区 205 5.4.10 处理列表
控件
中的通知消息 206 5.4.11 更改列表
控件
样式 206 5.4.12 虚拟列表
控件
207 5.4.13 列表
控件
的消息映射 209 5.4.14 列表
控件
的风格选项及表头设置 210 5.4.15 销毁列表
控件
210 5.5 Visual C++ 2010 Edit
控件
简介与开发 211 5.6 Visual C++ 2010 Rich Edit
控件
简介与开发 213 5.6.1 Rich Edit
控件
中的字符格式 215 5.6.2 Rich Edit
控件
中的段落格式 215 5.6.3 Rich Edit
控件
中的当前选定内容 215 5.6.4 Rich Edit
控件
中的分词 216 5.6.5 Rich Edit
控件
中的剪贴板操作 216 5.6.6 Rich Edit
控件
中的流操作 216 5.6.7 Rich Edit
控件
中的打印操作 216 5.6.8 无底的Rich Edit
控件
217 5.6.9 来自Rich Edit
控件
的通知 217 5.7 Visual C++ 2010 Progress
控件
简介与开发 219 5.7.1 进度
控件
的样式 219 5.7.2 进度
控件
的设置 219 5.7.3 操作进度
控件
220 5.8 Visual C++ 2010 Tree
控件
简介与开发 220 5.8.1 树
控件
样式 221 5.8.2 树
控件
父项和子项 221 5.8.3 树
控件
项位置 222 5.8.4 树
控件
项标签 222 5.8.5 树
控件
标签编辑 223 5.8.6 树
控件
项的状态 223 5.8.7 树
控件
图像列表 224 5.8.8 树
控件
项选择 224 5.8.9 树
控件
拖放操作 224 5.8.10 树
控件
项信息 225 5.8.11 树
控件
通知消息 225 5.9 Visual C++ 2010 DBgrid
控件
简介与开发 226 5.9.1 示例程序1 226 5.9.2 示例程序2 227 5.10 Visual C++ 2010 Rebar
控件
简介与开发 228 5.10.1 在Rebar
控件
中
使用
图像列表 230 5.10.2 在Rebar
控件
中
使用
对话栏 231 5.10.3 处理Rebar
控件
中的通知消息 231 5.11 Visual C++ 2010 Timer
控件
简介与开发 232 5.12 Visual C++ 2010 Tab
控件
简介与开发 234 5.12.1 选项卡和选项卡
控件
属性 235 5.12.2 选项卡
控件
的
使用
方法 235 5.12.3 创建选项卡
控件
的方法 235 5.12.4 处理选项卡
控件
通知消息 236 5.12.5 ctabctrl类简介 236 5.13 Visual C++ 2010 IP
控件
简介与开发 241 5.14 Visual C++ 2010 Picture
控件
简介与开发 241 5.15 Visual C++ 2010 Slider
控件
简介与开发 244 5.15.1 滑块
控件
样式 244 5.15.2 滑块
控件
成员函数 245 5.15.3 滑块
控件
通知消息 246 5.16 Visual C++ 2010 Scroll Bar
控件
简介与开发 246 5.17 Visual C++ 2010 Hot Key
控件
简介与开发 248 5.17.1
使用
热键
控件
248 5.17.2 设置热键 249 5.18 Visual C++ 2010 Animation
控件
简介与开发 249 5.18.1
使用
动画
控件
249 5.18.2 动画
控件
发送的通知 250 5.19 Visual C++ 2010 Spin
控件
简介与开发 250 5.19.1 数值调节钮的样式 250 5.19.2 数值调节钮成员函数 251 5.20 Visual C++ 2010 GroupBox
控件
简介与开发 251 5.21 Visual C++ 2010 Data Time Picker
控件
简介与开发 252 5.21.1 创建日期和
时
间选择器
控件
253 5.21.2 访问嵌入的月历
控件
253 5.21.3 在日期和
时
间选择器
控件
中
使用
自定义格式字符串 254 5.21.4 在日期和
时
间选择器
控件
中
使用
回调字段 254 5.21.5 处理日期和
时
间选择器
控件
中的通知消息 256 5.22 Visual C++ 2010 Month Canlendar
控件
简介与开发 256 5.22.1 创建月历
控件
257 5.22.2 处理月历
控件
中的通知消息 257 5.22.3 设置月历
控件
的日状态 257 5.23 Visual C++ 2010 Custom
控件
简介与开发 258 5.23.1
使用
MFC方法定制
控件
必备的几个基本概念 259 5.23.2 定制自定义
控件
的3种常见方法 260 5.24 Visual C++ 2010 SysLink
控件
简介与开发 260 5.25 Visual C++ 2010 Split Button
控件
简介与开发 261 5.26 Visual C++ 2010 Network Address
控件
简介与开发 262 5.27 Visual C++ 2010 Check Box
控件
简介与开发 262 5.28 Visual C++ 2010 Radio Button
控件
简介与开发 264 5.28.1 为单选按钮
控件
分组 264 5.28.2 获得被选中的单选按钮的文本 264 5.29 Visual C++ 2010 Mediaplayer
控件
简介与开发 265 5.30 小结 266 第二部分 Visual C++ 2010下MFC开发 第6章 计算机测控系统概述 267 6.1 Visual C++ 2010 SDI开发简介 267 6.1.1 建立应用程序基本框架 267 6.1.2 处理视图 267 6.1.3 处理文档 271 6.1.4 串行化处理 274 6.1.5 sdi应用程序编程思路 275 6.2 Visual C++ 2010 MDI开发简介 277 6.2.1 多文档接口 277 6.2.2 生成程序 278 6.2.3 程序类、文件和代码 279 6.2.4 自定义资源 281 6.3 Visual C++ 2010 View开发 282 6.3.1 生成源文件 283 6.3.2 初始化视图类数据成员 283 6.3.3 加入消息处理功能 285 6.3.4 设计程序资源 290 6.3.5 定制miniDraw窗口 292 6.3.6 程序清单 293 6.4 Visual C++ 2010 EditView开发 298 6.4.1 生成MiniEdit程序 299 6.4.2 修改程序菜单 300 6.4.3 编辑加速键 301 6.4.4 程序清单 303 6.5 Visual C++ 2010 FormView开发 306 6.5.1 自定义FormDemo程序 307 6.5.2 程序清单 314 6.6 Visual C++ 2010 ScrollView开发 319 6.6.1 加入滚动功能 319 6.6.2 坐标换算 319 6.6.3 限制图形大小 322 6.6.4 改变鼠标光标 325 6.7 Visual C++ 2010 HtmlEditView开发 328 6.8 Visual C++ 2010 HtmlView开发 331 6.9 Visual C++ 2010 ListView开发 335 6.10 Visual C++ 2010 RichEditView开发 335 6.11 VisualC++ 2010 TreeView开发 336 6.12 Visual C++ 2010 Office 2007风格文档视图开发框架 337 6.13 Visual C++ 2010 Visual Studio 2008风格文档视图开发框架 342 6.14 Visual C++ 2010 Windows资源管理器风格文档视图开发框架 346 6.15 小结 350 第7章 Visual C++ 2010 MFC应用程序界面与美化 351 7.1 应用程序窗口风格美化 351 7.1.1 借助ActiveSkin美化窗口 351 7.1.2 修改窗口外观 352 7.2 应用程序窗口图标与背景修改 359 7.2.1 修改窗口图标 359 7.2.2 修改背景 360 7.3 工具栏编程与美化 365 7.3.1 创建工具栏 365 7.3.2 在工具栏中添加、删除按钮 366 7.3.3 从对话框创建工具栏 368 7.4 状态栏编程与美化 370 7.4.1 创建状态栏 370 7.4.2 在状态栏中插入进度条 370 7.5 鼠标光标编程 371 7.5.1 鼠标光标编程步骤 371 7.5.2 鼠标的消息处理机制 373 7.5.3 示例 374 7.6 创建启动界面 376 7.7 创建特效窗口启动应用程序 378 7.8 创建特效窗口关闭应用程序 378 7.9 小结 383 第8章 Visual C++ 2010 MFC文本与字体 384 8.1 CFont字体类简介 384 8.1.1 CFont字体类成员介绍 384 8.1.2 CFont字体类初始化函数 385 8.1.3 其他成员介绍 390 8.2 创建文本插入符与图片插入符 391 8.2.1 创建文本插入符 391 8.2.2 创建图片插入符 394 8.2.3 创建随鼠标移动的插入符 396 8.3 输出文字与字体格式 397 8.3.1 输出固定文字 397 8.3.2 设定输出字体的格式 398 8.3.3 字符输入 399 8.4 输出彩色文字与变色文字 404 8.4.1 DrawText()函数和字符串资源 404 8.4.2 定
时
器和变色文字 408 8.5 小结 410 第9章 Visual C++ 2010 MFC图形图像编程 411 9.1 Windows
绘图
简介 411 9.1.1 设备描述表 411 9.1.2
绘图
属性 412 9.1.3 元文件和路径 412 9.1.4 颜色和调色板 412 9.1.5 图形设备接口函数 413 9.2 Windows屏幕
绘图
简介 414 9.2.1 窗口客户区 414 9.2.2 映射模式 414 9.2.3 图形
刷新
416 9.3 微软GDI
绘图
简介 416 9.3.1 GDI基础 416 9.3.2 GDI结构 417 9.3.3 GDI函数调用 417 9.3.4 GDI基本图形 418 9.4 GDI笔
绘图
419 9.4.1 CPen类简介 419 9.4.2
使用
GDI绘制线条 419 9.4.3
使用
CPen类绘制指定的线条 422 9.4.4 绘制连续的线条 424 9.5 GDI画刷
绘图
425 9.5.1 CBrush类介绍 426 9.5.2 CBrush类简单画刷的实现 429 9.5.3 CBrush类位图画刷的实现 430 9.5.4 透明画刷的实现 431 9.6 小结 433 第10章 Visual C++ 2010 MFC动态函数链接库 434 10.1 动态函数链接库简介 434 10.1.1 什么是动态函数链接库 434 10.1.2 动态函数链接库的优点 435 10.1.3 动态函数链接库的起源 436 10.1.4 动态函数链接库的原理 436 10.2 调用动态函数链接库 436 10.2.1 静态链接 436 10.2.2 动态链接 438 10.3 Dll的框架简介 439 10.3.1 DllMain()函数简介 439 10.3.2 Dll的导出函数 439 10.4 创建MFC Dll范例 440 10.4.1 建立MFC Dll工程 440 10.4.2 添加实现代码 442 10.4.3 编译并调用 443 10.5 创建Win32 Dll范例 443 10.5.1 建立Win32工程 443 10.5.2 添加动态链接库代码 444 10.5.3 编译工程 444 10.6 创建资源Dll范例 445 10.6.1 建立MFC Application工程 445 10.6.2 建立中文资源Dll 445 10.6.3 加载资源Dll 446 10.7 hook技术 446 10.7.1 hook函数类型 446 10.7.2
使用
hook函数 449 10.7.3 hook鼠标 449 10.7.4 hook键盘 450 10.8 小结 452 第11章 Visual C++ 2010 MFC
Activex
控件
454 11.1
Activex
控件
简介 454 11.2
Activex
控件
测试与注册 455 11.2.1
Activex
控件
的测试 455 11.2.2
Activex
控件
的注册 457 11.3 MFC
Activex
控件
向导 458 11.4
Activex
控件
属性开发 458 11.4.1 添加常用属性 459 11.4.2 添加自定义属性 460 11.4.3 高级属性实现 460 11.4.4 访问环境属性 461 11.5
Activex
控件
事件开发 461 11.5.1 添加常用事件 462 11.5.2 添加自定义事件 463 11.6
Activex
控件
方法开发 464 11.6.1 添加常用方法 465 11.6.2 添加自定义方法 465 11.6.3 从方法返回错误代码 466 11.7 完整
Activex
控件
范例 467 11.7.1 创建工程 467 11.7.2 clock
控件
的实现 469 11.7.3 添加常用属性 470 11.7.4 添加自定义属性 473 11.7.5 添加方法 474 11.7.6 添加常用事件 475 11.7.7 添加自定义事件 476 11.8 调用
Activex
控件
477 11.9 小结 478 第12章 Visual C++ 2010 MFC文件与注册表操作 479 12.1 文本操作串行化 479 12.1.1 文档类serialize()函数 479 12.1.2 CArchive对文件进行读写 482 12.1.3 文档操作串行化代码分析 485 12.2 CFile类 492 12.2.1 打开文件操作 493 12.2.2 读写文件操作 494 12.2.3 定位文件操作 496 12.2.4 关闭文件操作 497 12.2.5 异常操作 497 12.2.6 文件管理操作 498 12.3 .ini文件读写操作 500 12.4 注册表读写操作 502 12.4.1 注册表简介 502 12.4.2 注册表API 504 12.4.3 访问并修改注册表 507 12.5 小结 509 第13章 Visual C++ 2010 MFC数据库开发 510 13.1 数据库基本知识 510 13.2 SQL语言的基础知识 511 13.3 ODBC访问数据库 512 13.3.1 注册ODBC数据库 512 13.3.2 创建一个MFC的ODBC程序 514 13.3.3 程序结构分析 515 13.3.4 在视图上显示数据库查询结果 520 13.3.5 对查询结果排序及设置查询条件 524 13.3.6 动态设置查询条件并更新查询结果 527 13.4 ODBC更新数据库 532 13.5 ODBC访问SQL server 540 13.6 ado数据库访问 543 13.6.1 ado数据库访问概述 543 13.6.2 在Visual C++中
使用
ado编程 546 13.7 ado访问SQL server数据库 556 13.8 小结 556 第14章 Visual C++2010 MFC多线程程序设计 557 14.1 进程和多线程的概念 557 14.2 线程的创建 558 14.2.1 创建工作者线程 558 14.2.2 创建用户界面线程 559 14.3 线程的终止 560 14.4 设置线程的优先级 562 14.5 暂停及重新启动线程 563 14.6 线程间的通信 571 14.7 线程的同步 572 14.7.1 临界区 572 14.7.2 互斥量 573 14.7.3 事件 573 14.7.4 信号量 574 14.8 小结 579 第15章 Visual C++ 2010 MFC网络程序设计 580 15.1 计算机网络的基础知识 580 15.1.1 TCP/IP协议模型 580 15.1.2 ip地址 582 15.1.3 端口 582 15.1.4 数据封装 582 15.2 Winsock简介 583 15.3 MFC对Windows Sockets的支持 583 15.3.1 Socket的定义 584 15.3.2 casyncSocket类介绍 584 15.3.3 cSocket类介绍 592 15.4 一个基于udp的聊天室示例 593 15.4.1 MFC对Windows Sockets的初始化 593 15.4.2 服务器端的实现 595 15.4.3 客户端的实现 599 15.5 一个基于TCP的聊天室示例 605 15.5.1 服务器端的实现 606 15.5.2 客户端的实现 609 15.6 小结 612 第16章 Visual C++ 2010 MFC进程通信 613 16.1 剪贴板通信 613 16.1.1 Openclipboard()函数 613 16.1.2 Closeclipboard()函数 614 16.1.3 emptyclipboard()函数 614 16.1.4 Setclipboarddata()函数 614 16.1.5 globalalloc()函数 615 16.1.6 globallock()函数 616 16.1.7 globalunlock()函数 616 16.1.8 Getclipboarddata()函数 616 16.1.9 一个利用剪贴板在不同进程之间交换数据的示例 616 16.2 邮槽通信 619 16.2.1 Createmailslot()函数 619 16.2.2 Getmailslotinfo()函数 620 16.2.3 Setmailslotinfo()函数 621 16.2.4 ReadFile()函数 621 16.2.5 GetFiletime()函数和SetFiletime()函数 621 16.2.6 CreateFile()函数 622 16.2.7 WriteFile()函数 623 16.2.8 Closehandle()函数 623 16.2.9 一个利用邮槽在不同进程间通信的示例 623 16.3 匿名管道通信 628 16.3.1 Createpipe()函数 628 16.3.2 Createprocess()函数 629 16.3.3 Getstdhandle()函数 631 16.3.4 ReadFile()和WriteFile()函数 632 16.3.5 一个利用匿名管道在父子进程间通信的示例 632 16.4 命名管道通信 637 16.4.1 Createnamedpipe()函数 637 16.4.2 connectnamedpipe()函数 639 16.4.3 disconnectnamedpipe()函数 640 16.4.4 waitnamedpipe()函数 640 16.4.5 利用命名管道通信的基本流程 640 16.4.6 一个利用命名管道在不同进程间通信的示例 641 16.5 共享内存通信 647 16.5.1 CreateFilemApping()函数 647 16.5.2 mapViewofFile()函数 648 16.5.3 unmapViewofFile()函数 649 16.5.4 OpenFilemApping()函数 649 16.5.5 利用共享内存通信的基本流程 649 16.5.6 一个利用共享内存在不同进程间通信的示例 650 16.6 小结 655 第三部分 Visual C++ 2010下MFC与clr进行开发 第17章 Visual C++ 2010 clr开发基础 656 17.1 什么是.net 656 17.2 .net框架 656 17.3 公共语言运行
时
(clr) 657 17.3.1 托管代码 659 17.3.2 代码验证 659 17.3.3 代码访问验证 659 17.3.4 垃圾回收 659 17.3.5 语言的互操作性 660 17.3.6 实
时
编译(jit) 660 17.4 通用类型系统(cts) 661 17.5 通用语言规范(cls) 663 17.6 程序集 664 17.6.1 元数据 664 17.6.2 程序集版本管理 665 17.6.3 微软中间语言(msil) 665 17.6.4 资源 666 17.7 .net开发应用程序的范畴 666 17.8 .net框架类库 667 17.9 C++/clr开发语法简介 668 17.10 小结 670 第18章 Visual C++ 2010 clr Windows窗口编程 671 18.1 创建Windows应用程序 671 18.2 类层次结构 677 18.3 control类 677 18.3.1 大小与位置 678 18.3.2 外观 679 18.3.3 用户交互操作 679 18.3.4 Windows功能 680 18.4 标准Windows
控件
使用
指南 681 18.4.1 Button
控件
681 18.4.2 checkBox
控件
681 18.4.3 radioButton
控件
682 18.4.4 comboBox
控件
、ListBox
控件
和checkedListBox
控件
682 18.4.5 datetimepicker
控件
684 18.4.6 errorprovider组件 685 18.4.7 helpprovider组件 686 18.4.8 imageList组件 686 18.4.9 label
控件
686 18.4.10 ListView
控件
687 18.4.11 pictureBox
控件
688 18.4.12 progressbar
控件
689 18.4.13 TextBox
控件
、RichTextBox
控件
与maskedTextBox 18.4.13
控件
689 18.4.14 panel
控件
690 18.4.15 flowlayoutpanel
控件
和tablelayoutpanel
控件
690 18.4.16 splitcontainer
控件
691 18.4.17 tabcontrol
控件
和tabpage
控件
691 18.4.18 toolstrip
控件
692 18.4.19 menustrip
控件
694 18.4.20 conTextmenustrip
控件
694 18.4.21 toolstripmenuitem
控件
694 18.4.22 toolstripmanager类 695 18.4.23 toolstripcontainer
控件
695 18.5 窗体Winform 695 18.5.1 form类 695 18.5.2 多文档界面 700 18.5.3 定制
控件
700 18.6 小结 707 第19章 Visual C++ 2010 MFC与.net交互编程 708 19.1 编写托管扩展应用程序 708 19.2 编写访问.net的MFC程序 709 19.3 混合模式编程问题 711 19.4 运用.net类型 713 19.4.1 定义和
使用
托管类型 713 19.4.2 将非托管对象作为托管类的成员 715 19.4.3 装箱和拆箱 716 19.4.4 指针 717 19.4.5 在非托管代码中
使用
托管数组 719 19.5 小结 720 第四部分 发布Visual C++ 2010程序 第20章 Visual C++ 2010应用程序部署 721 20.1 Windows installer介绍 722 20.2 一个简单的Windows应用程序 723 20.3
使用
安装向导快速创建安装包 726 20.4 手动创建安装程序 728 20.5
使用
安装编辑器 731 20.5.1 File system(文件系统编辑器) 731 20.5.2 registry编辑器 732 20.5.3 File types编辑器 733 20.5.4 user interface编辑器 734 20.5.5 custom actions编辑器 735 20.5.6 launch conditions编辑器 736 20.6 小结 736 第五部分 基于Windows 7平台用Visual C++ 2010开发 第21章 Visual C++ 2010基于Windows 7新特性开发 737 21.1 实现C++兼容开发 737 21.1.1 实现uac数据重定向 737 21.1.2 实现高dpi 741 21.1.3 实现安装程序检测 742 21.1.4 会话0隔离 743 21.1.5 用户界面特权隔离(uipi) 746 21.1.6 版本检查 748 21.2 Windows 7系统专题 750 21.2.1 实现超级任务栏 750 21.2.2 实现shell库 759 21.2.3 实现后台服务 762 21.2.4 开发基于Windows 7的 21.1.5 设备与性能应用 763 21.3 开发基于Windows 7的新特性 769 21.3.1 实现多点触摸 769 21.3.2 实现获取传感器与位置 771 21.3.3 实现Windows 7 ribbon界面开发 774 21.3.4 基于Visual C++ 2010开发基于Windows 7的语音识别与语音合成 776 21.3.5 基于Visual C++ 2010与Windows sdk for Windows 7开发Windows 7平台的tablet pc应用 787 21.3.6 开发Windows 7的安全体验cryptoAPI加密 804
MFC教程入门知识全集.rar
说明:本书稿为张孝祥、袁龙友两位老师在2000 年依据张孝祥的vc 讲课记录整理,由于
时
间关系,仅仅是写成了草稿,欢迎大家
使用
! 第1 章 掌握C 1.1 类的定义与应用 1.1.1 结构的定义 1.1.2 类的定义 1.1.2.1 类与结构 1.1.2.2 类的
使用
(例子代码EX01-00) 1.2 函数的重载 1.2.1 重载参数个数不同的函数 (例子代码EX01-01) 1.2.2 重载参数数据类型不同的函数 (例子代码EX01-02) 1.3 构造函数与析构函数 1.3.1 构造函数 1.3.2 析构函数 (图1,没有)(图2,没有) 1.4 this 指针的引用 1.5 类的继承与protected 访问修饰符 1.5.1 单一继承 (例子代码EX01-03) (图x,没有) 1.5.2 多重继承 1.6 虚函数与多态性 1.7 类的书写规范 1.8 小结 第2 章 Windows 程序内部运行原理 2.1 Windows 应用程序,操作系统,计算机硬件之间的相互关系 2.1.1 关于API (图1,没有) 2.1.2 关于消息及消息队列 (图1、图2 没有) 2.2 什么是句柄 2.3 谈谈WinMain 函数 (例子代码EX02-00) 2.3.1 WinMain 函数的定义及功能 2.3.2 窗口及其生成 2.3.2.1 如何设计一个窗口类——步骤1 2.3.2.2 注册设计好的窗口类——步骤2 2.3.2.3 创建窗口——步骤3 2.3.2.4 显示创建的窗口——步骤4 2.3.3 消息循环 2.3.4 完成回调函数 2.4 程序编写操作步骤与实验 2.5 小结 第3 章 VC 集成开发环境介绍 3.1 Visual C 开发环境 3.1.1 工作区窗格 3.1.2 输出窗格 3.1.3 编辑区 3.1.4 菜单栏、工具栏、状态栏 3.2 系统菜单功能介绍 3.2.1 File 菜单 3.2.2 Edit 菜单 3.2.3 View 菜单 3.2.4 Insert 菜单 3.2.5 Project 菜单 3.2.6 Build 菜单 3.2.6 Tools 菜单 3.2.7 Window 菜单 3.2.8 Help 菜单 3.3 Visual C 重要工具介绍 3.3.1 C/C 编译器 3.3.2 资源编辑器 3.3.3 资源编译器 3.3.4 链接器和调试器 3.3.5 AppWizard 和ClassWizard 3.3.6 资源浏览器 3.3.7 Microsoft 活动模板库、仓库 3.4 小结 第4 章 MFC 应用程序框架剖析 4.1 什么是MFC 以及MFC 的特点 (例子代码EX04-00) 4.2 MFC 应用程序框架 (例子代码EX04-01) 4.3 应用程序框架说明 4.4 文档-视图体系结构 4.4.1 文档-视图相互作用的函数 4.4.2 单文档-视图应用程序结构 4.4.2 多文档-视图应用程序结构 4.5 MFC 消息映射机制 4.5.1 消息的种类 4.5.2 应用程序的Run 函数 4.5.3 消息映射表 4.5.4 如何添加消息映射 4.6 ClssWizard 的
使用
4.6.1 ClssWizard 概貌 4.6.2 如何添加消息处理函数 4.6.3 如何添加成员变量 4.6.4 如何添加一个新类 第5 章 图形与文本 5.1 理解图形设备接口 5.2 设备描述表 5.2.1 什么是设备描述表 5.2.2 MFC 中的设备描述表类 5.2.3 获取设备描述表 5.3 Windows 的GDI 对象 5.4 GDI 对象的创建 5.4.1 自定义画刷(CBrush) 5.4.2 自定义画笔(CPen) 5.4.3 自定义字体(CFont) 5.5 GDI 对象的
使用
及示例 5.5.1 画笔的
使用
5.5.1.1 在MFC 程序中画线 5.5.1.2 在Windows Application 程序中画线 5.5.1.3 实现橡皮筋功能 5.5.2 画刷的
使用
5.5.2.1 带颜色的画刷的
使用
5.5.2.2 带位图的画刷的
使用
5.5.3 字体的
使用
5.5.3.1 一个简单的文字处理程序 5.5.3.2 模拟卡拉OK 程序 5.5.3.3 剪切区和路径层 第六章 菜单、工具栏和状态栏 6.1 菜单 6.1.1 菜单介绍 6.1.2 创建一个菜单 6.1.2.1 添加一个菜单资源 6.1.2.2 利用菜单编辑器编辑菜单资源 6.1.2.3 将菜单加入到应用程序中 6.1.2.4 给菜单项添加COMMAND 消息处理 6.1.2.5 给菜单项添加UPDATE_COMMAND_UI 消息处理 6.1.2.6 一个简单的
绘图
程序 6.1.3 在应用程序中控制菜单 6.1.3.1 在应用程序中取得菜单 6.1.3.2 在应用程序中修改菜单的状态 6.1.3.3 在应用程序中添加、删除、插入菜单或菜单项 6.1.3.4 一个简易的电话本程序 6.1.4 创建快捷方式菜单 6.2 工具栏 6.2.1 工具栏介绍 6.2.1.1 熟悉CToolBar 类 6.2.1.2 AppWizard 是如何创建工具栏 6.2.1.3 利用工具栏编辑器设计工具栏按钮 6.2.2 新建一个工具栏 6.2.3 显示/隐藏工具栏 6.3 状态栏 6.3.1 状态栏介绍 6.3.1.1 熟悉CStatusBar 类 6.3.1.2 AppWizard 是如何创建状态栏 6.3.2 修改状态栏 6.3.2.1 指示器数组 6.3.2.2 修改状态栏窗格 6.3.3 在状态栏上显示鼠标坐标、
时
钟和进度条 6.3.3.1 在状态栏上显示鼠标坐标 6.3.3.2 在状态栏上显示
时
钟 6.3.3.3 在状态栏上显示进度条 第七章 对话框和
控件
7.1 对话框及
控件
的介绍 7.1.1 常用
控件
介绍 7.1.2 对话框介绍 7.1.2.1 对话框的组成 7.1.2.2 对话框的种类 7.1.2.3
使用
对话框编辑器设计对话框 7.1.3 创建一个对话框 7.1.3.2 创建非模态对话框 7.1.3.3 对话框的数据交换机制 7.1.3.4 创建模态对话框 7.1.4 模态对话框和非模态对话框的区别 7.1.5 按钮逃跑小程序 7.2 属性页和向导对话框 7.2.1 创建属性页对话框 7.2.1 创建向导对话框 7.3 公用对话框 7.3.1 增加设置对话框来完善
绘图
程序 7.3.2 颜色对话框的
使用
7.3.3 字体对话框的
使用
7.3.4 控制
控件
颜色做漂亮界面 第8 章 文档序列化 8.1 序列化 8.1.1 CArchive 类和Serialize 函数 8.1.2 使自己的类支持序列化 8.1.3 实例:保存和显示图形 8.2 CFile 类 8.2.1 CFile 类的构造函数 8.2.2 打开文件 8.2.3 读写数据 8.2.4 关闭文件 8.3 文件I/O 处理 8.3.1 利用MFC 类来实现 8.3.2 利用C 函数来实现 8.3.3 利用C 函数来实现 8.3.4 利用API 函数来实现 8.3.5 创建保存、打开对话框 8.4 注册表操作 8.4.1 什么是注册表 8.4.2 注册表结构 8.4.3 修改注册表 第9 章 修改框架程序的显示效果 9.1 修改Windows 应用程序外观样式 9.1.1 在框架类中修改程序外观 9.1.2 在视图类中修改程序外观 9.2 制作动画图标 9.3 将图片作为窗口显示的背景 第10 章 网络编程 10.1 计算机网络的基本概念 10.1.1 计算机网络的分类 10.1.2 网络拓扑结构 10.2 网络体系结构和网络协议 10.2.1 ISO/OSI 参考模型 10.2.2 TCP/IP 参考模型 10.2.3 TCP/IP 协议 10.2.3.1 协议概述 10.2.3.2 TCP/IP 协议层次结构及各种协议介绍 10.2.3.3 IP 地址 10.2.3.4 端口号 10.2.4 专业术语解释 10.3 Socket 套接字 10.3.1 Socket 介绍 10.3.2 关于协议族和地址族 10.3.3
使用
Socket 10.3.3.1 创建Socket 10.3.3.2 指定本地地址及端口号 10.3.3.3 建立连接 10.3.3.4 监听连接 10.3.3.5 发送数据 10.3.3.6 接收数据 10.3.3.7 关闭套接字 10.3.4 套接字一般调用过程 10.4 WinSock 编程机制 10.4.1 认识Windows Socket 10.4.2 Windows Sockets 库函数介绍 10.4.2.1 Berkeley socket 函数 10.4.2.2 数据库函数 10.4.2.3 Windows 专有扩展函数 10.5 WinSock 编程实例 10.5.1 实例一:面向连接服务的socket 调用 10.5.2 实例二:面向非连接服务的socket 调用 10.5.3 实例三:基于字符界面的聊天程序 第11 章 线程间的同步 11.1 进程和线程的概念 11.2 Win32 的线程 11.2.1 线程的创建 11.2.2 线程的终止 11.2.3 实例:通过创建多线程来编写网络聊天程序 11.3 MFC 的线程处理 11.3.1 创建工作者线程 11.3.2 创建用户界面线程 11.4 线程同步 11.4.1 为什么要同步 11.4.2 等待函数 11.4.3 同步对象 11.4.3.1 关键代码段 11.4.3.2 互斥对象 11.4.3.3 信标对象 11.4.3.4 事件对象 11.4.4 如何选择同步对象 第12 章 进程间的通讯 12.1 进程控制 12.1.1 进程的创建 12.1.2 进程的终止 12.2 进程间通讯 12.2.1 剪贴板通讯方式 12.2.2 邮槽通讯方式 12.2.3 管道通讯方式 12.2.3.1 命名管道通讯 12.2.3.2 匿名管道通讯 第14 章
ActiveX
技术 14.1
ActiveX
简介 14.2
ActiveX
控件
和普通Windows
控件
14.2.1
ActiveX
控件
和普通Windows
控件
的相同点 14.2.2
ActiveX
控件
和普通Windows
控件
的相同点 14.3
ActiveX
控件
的属性、方法和事件 14.3.1
ActiveX
控件
的属性 14.3.2
ActiveX
控件
的方法 14.3.3
ActiveX
控件
的事件 14.4 创建
ActiveX
控件
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章