资源说明:第1章 MFC概述........................................................................... 1
1.1 MFC是一个编程框架......................................................... 1
1.1.1 封装........................................................................ 1
1.1.2 继承........................................................................ 2
1.1.3 虚拟函数和动态约束................................................ 2
1.1.4 MFC的宏观框架体系................................................ 2
1.2 MDI应用程序的构成.......................................................... 3
1.2.1 构成应用程序的对象................................................ 3
1.2.2 构成应用程序的对象之间的关系.............................. 5
1.2.3 构成应用程序的文件................................................ 5
第2章 MFC和Win32..................................................................... 9
2.1 MFC Object和Windows Object的关系................................ 9
2.2 Windows Object................................................................ 12
2.2.1 Windows的注册...................................................... 12
2.2.2 MFC窗口类CWnd.................................................. 15
2.2.3 在MFC下创建一个窗口对象.................................. 17
2.2.4 MFC窗口的使用..................................................... 18
2.2.5 在MFC下窗口的销毁............................................ 19
2.3 设备描述表...................................................................... 20
2.3.1 设备描述表概述..................................................... 20
2.3.2 设备描述表在MFC中的实现.................................. 22
2.3.3 MFC设备描述表类的使用....................................... 24
2.4 GDI对象.......................................................................... 25
第3章 CObject类......................................................................... 28
3.1 CObject的结构................................................................. 28
3.2 CObject类的特性.............................................................. 30
3.3 实现CObject特性的机制.................................................. 32
3.3.1 DECLARE_DYNAMIC等宏的定义........................... 32
3.3.2 CruntimeClass类的结构与功能................................. 35
3.3.3 动态类信息、动态创建的原理................................ 38
3.3.4 序列化的机制......................................................... 39
第4章 消息映射的实现................................................................ 42
4.1 Windows消息概述............................................................ 42
4.1.1 消息的分类............................................................ 42
4.1.2 消息结构和消息处理.............................................. 42
4.2 消息映射的定义和实现.................................................... 44
4.2.1 MFC处理的三类消息.............................................. 44
4.2.2 MFC消息映射的实现方法....................................... 45
4.2.3 在声明与实现的内部.............................................. 46
4.2.3.1 消息映射声明的解释.................................... 47
4.2.3.2 消息映射实现的解释.................................... 49
4.2.4 消息映射宏的种类.................................................. 51
4.3 CcmdTarget类.................................................................. 54
4.4 MFC窗口过程.................................................................. 55
4.4.1 MFC窗口过程的指定.............................................. 56
4.4.2 对Windows消息的接收和处理............................... 58
4.4.2.1 从窗口过程到消息映射................................. 59
4.4.2.2 Windows消息的查找和匹配.......................... 60
4.4.2.3 Windows消息处理函数的调用....................... 62
4.4.2.4 消息映射机制完成虚拟函数功能的原理........ 63
4.4.3 对命令消息的接收和处理....................................... 64
4.4.3.1 MFC标准命令消息的发送............................. 64
4.4.3.2 命令消息的派发和消息的多次处理............... 67
4.4.3.3 一些消息处理类的OnCmdMsg的实现........... 69
4.4.3.4 一些消息处理类的OnCommand的实现......... 71
4.4.4 对控制通知消息的接收和处理................................ 72
4.4.4.1 WM_COMMAND控制通知消息的处理.......... 72
4.4.4.2 WM_NOTIFY消息及其处理:......................... 73
4.4.4.3 消息反射...................................................... 74
4.4.5 对更新命令的接收和处理....................................... 77
4.4.5.1 实现方法...................................................... 77
4.4.5.2 状态更新命令消息........................................ 78
4.4.5.3 类CCmdUI................................................... 79
4.4.5.4 自动更新用户接口对象状态的机制............... 80
4.5 消息的预处理.................................................................. 82
4.6 MFC消息映射的回顾........................................................ 83
第5章 MFC对象的创建............................................................... 85
5.1 MFC对象的关系............................................................... 85
5.1.1 创建关系................................................................ 85
5.1.2 交互作用关系......................................................... 86
5.2 MFC提供的接口............................................................... 87
5.2.1 虚拟函数接口......................................................... 87
5.2.2 消息映射方法和标准命令消息................................ 91
5.3 MFC对象的创建过程........................................................ 94
5.3.1 应用程序中典型对象的结构.................................... 94
5.3.1.1 应用程序类的成员变量................................. 95
5.3.1.2 CDocument的成员变量................................. 97
5.3.1.3 文档模板的属性........................................... 97
5.3.2 WinMain入口函数................................................... 99
5.3.2.1 WinMain流程................................................ 99
5.3.2.2 MFC空闲处理............................................. 101
5.3.3 SDI应用程序的对象创建....................................... 102
5.3.3.1 文档模板的创建.......................................... 102
5.3.3.2 文件的创建或者打开................................... 103
5.3.3.3 SDI边框窗口的创建.................................... 112
5.3.3.4 视的创建.................................................... 115
5.3.3.5 窗口初始化................................................. 116
5.3.3.6 视的初始化................................................. 120
5.3.3.7 激活边框窗口(处理WM_ACTIVE)............... 121
5.3.3.8 SDI流程的回顾........................................... 122
5.3.4 MDI程序的对象创建............................................. 123
5.3.4.1 有别于SDI的主窗口加载过程.................... 124
5.3.4.2 MDI子窗口、视、文档的创建..................... 125
5.3.4.3 MDI子窗口的初始化和窗口的激活.............. 127
第6章 应用程序的退出.............................................................. 131
6.1 边框窗口对WM_CLOSE的处理..................................... 131
6.2 窗口的销毁过程............................................................. 135
6.2.1 DestroyWindow..................................................... 135
6.2.2 处理WM_DESTROY消息..................................... 136
6.2.3 处理WM_NCDESTROY消息................................ 136
6.3 SDI窗口、MDI主、子窗口的关闭.................................. 137
第7章 MFC的DLL.................................................................... 139
7.1 DLL的背景知识.............................................................. 139
7.2 调用约定........................................................................ 141
7.2.1 MFC的DLL应用程序的类型................................. 142
7.3 DLL的几点说明.............................................................. 143
7.4 输出函数的方法............................................................. 145
第8章 MFC的进程和线程.......................................................... 148
8.1 Win32的进程和线程概念................................................ 148
8.2 Win32的进程处理简介.................................................... 148
8.2.1 进程的创建.......................................................... 148
8.2.2 进程的终止.......................................................... 149
8.3 Win32的线程.................................................................. 150
8.3.1 线程的创建.......................................................... 150
8.3.2 线程的终止.......................................................... 150
8.3.3 线程局部存储....................................................... 151
8.4 线程同步........................................................................ 152
8.4.1 同步对象.............................................................. 152
8.4.2 等待函数.............................................................. 153
8.5 MFC的线程处理............................................................. 154
8.5.1 创建用户界面线程................................................ 155
8.5.2 创建工作者线程................................................... 155
8.5.3 AfxBeginThread...................................................... 155
8.5.4 CreateThread和_AfxThreadEntry............................. 157
8.5.5 线程的结束.......................................................... 160
8.5.6 实现线程的消息循环............................................ 161
第9章 MFC的状态.................................................................... 163
9.1 模块状态........................................................................ 163
9.2 模块、进程和线程状态的数据结构................................. 164
9.2.1 层次关系.............................................................. 164
9.2.2 CNoTrackObject类................................................ 166
9.2.3 AFX_MODULE_STATE类..................................... 166
9.2.4 _AFX_BASE_MODULE_STATE.............................. 169
9.2.5 _AFX_THREAD_STATE........................................ 169
9.2.6 AFX_MODULE_THREAD_STATE.......................... 171
9.3 线程局部存储机制和状态的实现..................................... 172
9.3.1 CThreadSlotData和_afxThreadData......................... 173
9.3.1.1 CThreadSlotData的定义............................... 173
9.3.1.2 CThreadSlotData的一些数据成员................. 174
9.3.1.3 _afxThreadData............................................ 175
9.3.2 线程状态_afxThreadState....................................... 176
9.3.3 进程模块状态afxBaseModuleState.......................... 178
9.3.4 状态对象的创建................................................... 180
9.3.4.1 状态对象的创建过程................................... 180
9.3.4.2 创建过程所涉及的几个重要函数的算法....... 183
9.4 管理状态........................................................................ 184
9.4.1 模块状态切换....................................................... 184
9.4.2 扩展DLL的模块状态........................................... 186
9.4.2.1 _AFX_EXTENSION_MODULE..................... 187
9.4.2.2 扩展DLL的初始化函数.............................. 188
9.4.3 核心MFC DLL..................................................... 190
9.4.4 动态链接的规则DLL的模块状态的实现............... 190
9.5 状态信息的作用............................................................. 192
9.5.1.1 模块信息的保存和管理............................... 192
9.5.2 MFC资源、运行类信息的查找.............................. 193
9.5.3 模块信息的显示................................................... 194
9.5.4 模块-线程状态的作用........................................... 196
9.5.4.1 只能访问本线程MFC对象的原因............... 196
9.5.4.2 实现MFC对象和Windows对象之间的映射 196
9.5.4.3 临时对象的处理.......................................... 199
9.6 状态对象的删除和销毁................................................... 199
第10章 内存分配方式和调试机制............................................... 202
10.1 M内存分配................................................................... 202
10.1.1 内存分配函数..................................................... 202
10.1.2 C++的new 和 delete操作符................................ 204
10.2 调试手段...................................................................... 204
10.2.1 C运行库提供和支持的调试功能.......................... 204
10.2.2 MFC提供的调试手段.......................................... 205
10.2.3 内存诊断............................................................ 208
第11章 MFC下的文件类............................................................ 210
11.1 文件操作的方法........................................................... 210
11.2 MFC的文件类............................................................... 210
11.2.1 CFile的结构........................................................ 211
11.2.1.1 CFile定义的枚举类型................................. 211
11.2.1.2 CFile的其他一些成员变量.......................... 212
11.2.1.3 CFile的成员函数........................................ 212
11.2.2 CFile的部分实现................................................. 213
11.2.3 CFile的派生类..................................................... 215
第12章 对话框和对话框类CDialog............................................. 217
12.1 模式和无模式对话框.................................................... 217
12.1.1 模式对话框......................................................... 217
12.1.2 无模式对话框..................................................... 218
12.2 对话框的MFC实现...................................................... 219
12.2.1 CDialog的设计和实现.......................................... 219
12.2.1.1 CDialog的成员变量.................................... 219
12.2.1.2 CDialog的成员函数:................................ 219
12.2.2 MFC模式对话框的实现....................................... 220
12.2.2.1 MFC对话框过程........................................ 220
12.2.2.2 模式对话框窗口过程................................. 221
12.2.2.3 使用原对话框窗口过程作消息的缺省处理. 225
12.2.2.4 Dialog命令消息和控制通知消息的处理...... 226
12.2.2.5 消息预处理和Dialog消息.......................... 228
12.2.2.6 模式对话框的消息循环............................. 229
12.2.3 对话框的数据交换.............................................. 233
12.2.3.1 数据交换的方法........................................ 233
12.2.3.2 CDataExchange........................................... 234
12.2.3.3 数据交换和验证函数................................. 236
12.2.3.4 UpdateData函数......................................... 239
12.3 无模式对话框............................................................... 240
12.3.1 CScrollView......................................................... 240
12.3.2 CFormView.......................................................... 242
12.3.2.1 CFormView的创建..................................... 243
12.3.2.2 CFormView的消息预处理.......................... 245
12.3.2.3 CFormView的输入焦点.............................. 247
第13章 MFC工具条和状态栏..................................................... 248
13.1 Windows控制窗口........................................................ 248
13.2 MFC的工具条和状态栏类............................................. 249
13.2.1 控制窗口的创建.................................................. 251
13.2.1.1 PreCreateWindow....................................... 251
13.2.1.2 控制条的窗口创建.................................... 253
13.2.2 控制条的销毁..................................................... 259
13.2.3 处理控制条的位置.............................................. 259
13.2.3.1 计算控制条位置的过程和算法................... 259
13.2.3.2 CFrameWnd的虚拟函数RecalcLayout......... 260
13.2.3.3 CWnd的成员函数RepositionBars................ 262
13.2.4 工具条、状态栏和边框窗口的接口...................... 265
13.2.4.1 应用程序在状态栏中显示信息................... 265
13.2.4.2 状态栏显示菜单项的提示信息................... 268
13.2.4.3 控制条的消息分发处理............................. 270
13.2.4.4 Tooltip....................................................... 275
13.2.4.5 禁止和允许............................................... 279
13.2.4.6 显示或者隐藏工具栏和状态栏................... 285
13.2.5 泊位和漂浮......................................................... 286
第14章 SOCKET类的设计和实现............................................... 288
14.1 WinSock基本知识......................................................... 288
14.1.1 WinSock API....................................................... 288
14.1.2 Socket的使用...................................................... 290
14.2 MFC对WinSockt API的封装......................................... 291
14.2.1 CAsyncSocket...................................................... 291
14.2.2 socket对象的创建和捆绑..................................... 292
14.2.3 异步网络事件的处理........................................... 296
14.3 CSocket......................................................................... 297
14.4 CSocketFile.................................................................... 299
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。