第一章 面向对象编程概述 1
1.1 什么是面向对象程序设计 1
1.2 对象、方法和消息 2
1.3 类的层次 3
1.4 面向对象的编程特征 4
1.4.1 封装性 4
1.4.2 继承性 4
1.4.3 多态性 4
第二章 MFC类库编辑基础 5
2.1 面向对象编程 5
2.1.1 类与对象 5
2.1.2 构造函数 7
2.1.3 析构函数 11
2.1.4 多态性 12
2.1.5 友员 16
2.1.6 类的静态成员 18
2.2 MFC类库简介 21
2.2.1 根类:CObject类 23
2.2.2 应用程序体系结构类 23
2.2.3 可视对象类 24
2.2.4 通用类 26
2.2.5 ODBC数据库类 27
2.2.6 OLE类 27
第三章 Visual C++5.0新增功能和开发环境 28
3.1 Visual C++5.0新增功能 28
3.1.1 学习版新特征 28
3.1.2 专业版新功能 28
3.1.3 企业版新功能 30
3.2.1 File菜单 31
3.2 集成开发环境 31
3.2.2 Edit菜单 33
3.2.3 View菜单 34
3.2.4 Build菜单 35
3.2.5 Windows菜单 35
第四章 一个简单的应用程序 36
4.1 Hello应用程序 36
4.2 生成应用程序的工程文件 37
4.3 进行可视化编程 42
4.4 给应用程序连接代码 45
第五章 如何创建一个应用程序 49
5.1 工程文件(Project) 49
5.2 AppWizard 51
5.3 可视化编程 55
5.3.1 工程工作区(Workspace)窗口 55
5.3.2 常用控件 58
5.3.3 控件属性 62
5.3.4 ClassWizard 65
5.4 手工编写代码 67
第六章 单文档界面(SDI)编程 77
6.1 Person应用程序 77
6.2 生成工程文件 79
6.3 文档和视 83
6.4 界面的可视化编程 83
6.4.1 应用程序主窗口的可视化实现 83
6.4.2 菜单条的可视化实现 84
6.4.3 给对话框IDD_PERSON_FORM中的控件连接变量 85
6.5 添加代码 86
6.5.1 声明文档类中的数据成员 86
6.5.2 初始化文档类的数据成员 88
6.5.3 初始化视类的数据成员 89
6.5.4 连接文档类和视类的数据成员 90
6.5.5 向文件中写数据和读数据 93
6.6 进一步完善应用程序 95
6.7 执行Person应用程序 96
第七章 SDI应用程序的增强 98
7.1 增强的Person应用程序 98
7.2 界面的可视化编程 99
7.2.1 应用程序主窗口的可视化实现 99
7.3 添加代码 100
7.3.1 创建一个新类CPeople 100
7.3.2 声明文档类中的数据成员 101
7.3.3 初始化文档类的数据成员 103
7.3.4 删除列表中的对象 105
7.3.5 声明视类的数据成员 106
7.3.6 初始化视类的数据成员 107
7.3.7 连接文档类和视类的数据成员 109
7.3.8 给命令按钮连接代码 111
7.3.9 向文件中写列表和读列表 117
7.4 执行Person应用程序 119
7.5 CObList类 120
7.5.1 成员函数 120
7.5.2 主要成员函数 121
第八章 动态链接库(DLL) 127
8.1 动态链接库的概念 127
8.2 创建一个动态链接库文件 127
8.2.1 建立工程文件 128
8.2.2 定制CPP文件 130
8.2.3 定制DEF文件 132
8.3 编写使用动态链接库的应用程序 133
8.3.1 TestDLL应用程序 133
8.3.2 创建应用程序的工程文件 135
8.3.4 代码编写 137
8.3.3 菜单条的可视化实现 137
8.3.5 执行TestDLL应用程序 141
第九章 多文档界面(MDI)编程 144
9.1 什么是多文档界面(MDI) 144
9.2 Books应用程序 144
9.3 生成应用程序的工程文件 148
9.4 界面的可视化编程 152
9.4.1 应用程序窗口的可视化实现 152
9.4.2 菜单的可视化实现 153
9.5 添加代码 155
9.5.1 声明视类的数据成员 155
9.5.2 定义文档类中的数据成员 156
9.5.3 初始化视类的数据成员 158
9.5.4 向文件中写数据和读数据 159
9.5.5 实现一个文档的多个视 160
9.6.1 增加分割条 164
9.6 增强Books应用程序 164
9.6.2 在菜单中加入split选项 165
9.7 执行Books应用程序 166
第十章 ActiveX控件的属性、方法和事件 167
10.1 ActiveX控件概述 167
10.1.1 ActiveX控件的基本元素 167
10.1.2 窗口控件和ActiveX控件容器 168
10.1.3 ActiveX控件的活动状态和非活动状态 168
10.1.4 ActiveX控件类的安装 168
10.2 ActiveX控件的事件 169
10.2.1 ActiveX控件的事件 169
10.2.2 ActiveX控件的储备事件 170
10.2.3 ActiveX控件的自定义事件 172
10.3.1 ActiveX控件的方法 174
10.3 ActiveX控件的方法 174
10.3.2 ActiveX控件的储备方法 175
10.3.3 ActiveX控件的自定义方法 176
10.4 ActiveX控件的属性 177
10.4.1 ActiveX控件的属性 177
10.4.2 ActiveX控件的储备属性 177
10.4.3 ActiveX控件的自定义属性 180
10.4.4 ActiveX控件的高级属性 182
10.4.5 访问环境属性 183
第十一章 ActiveX控件的使用 184
11.1 ActiveX简介 184
11.2 ActiveX文档服务 184
11.4 ActiveX控件 185
11.4.1 通用ActiveX ControlWizard创建控件 185
11.3 ActiveX 文档容器 185
11.4.2 使用ActiveX ControlWizard的步骤 186
11.4.3 在ActiveX控件文件中增加代码 186
11.5 ActiveX控件的属性页 187
11.5.1 ActiveX控件的属性页 187
11.5.2 增加用户属性页 189
11.5.3 使用储备属性页 191
11.6 增加正文敏感帮助 191
11.7 ActiveX控件中的字体 193
11.7.1 字体储备属性 193
11.7.2 字体自定义属性 194
11.8 ActiveX控件中的图片 198
11.8.1 自定义图片属性 198
11.8.2 实现自定义的图片属性 198
12.1 COM和ATL简介 201
12.1.1 COM介绍 201
第十二章 活动模板库(ATL)入门 201
12.1.2 ATL介绍 202
12.2 ATL入门示例 204
12.2.1 第一步——建立工程 204
12.2.2 第二步——增加控件 205
12.2.3 第三步——给控件增加属性 207
12.2.4 第四步——修改绘图代码 209
12.2.5 第五步——增加事件 212
12.2.6 第六步——增加属性页 216
12.2.7 第七步——把控件放到网页上 220
12.2.8 附录 222
第十三章 进一步了解ATL 226
13.1 创建一个ATL工程 226
13.1.1 使用ATL COM AppWizard 226
13.1.2 ATL COM AppWizard生成的文件 227
13.1.3 添加对象和控件 228
13.1.4 给已存在的对象或控件增加一个新的接口 231
13.2 ATL COM对象基础 231
13.2.1 实现CComObjectRootEx 232
13.2.2 实现CComObject,CComAggObject和CComPolyObject 232
13.2.3 IDispatch和IErrorInfo的支持 233
13.2.4 改变缺省类工厂和聚合模型 233
13.2.5 建立一个聚合 234
13.3 ATL窗口类 234
13.3.1 使用一个窗口 235
13.3.2 实现一个窗口 235
13.3.3 实现一个对话框 237
13.3.4 使用容器窗口 238
13.4 连接点 239
13.4.1 连接点类 239
13.4.3 连接点的例子 240
13.4.2 给对象增加一个连接点 240
13.6 代理产生器 241
13.5 枚举器(Enumerator) 241
13.7 ATL对象的调试技巧 243
13.7.1 使用DebugBreak 243
13.7.2 使用QueryInterface调试 243
13.7.3 使用引用计数调试 243
第十四章 ATL服务 244
14.1 CServiceModule类的成员函数 244
14.1.1 CServiceModule::Start 244
14.1.2 CServiceModule::ServiceMain 244
14.1.3 CServiceModule::Run 245
14.1.4 CServiceModule::Handler 246
14.2 注册入口 246
14.3 DCOMCNFG 246
14.4 调试技巧 247
14.4.1 使用任务管理器 247
14.3.1 缺省安全特性 247
14.3.3 应用程序 247
14.3.2 缺省特性 247
14.4.2 显示声明 248
14.4.3 运行程序作为本地服务器 248
第十五章 ATL注册构件(Registrar) 249
15.1 创建Rgeistrar脚本 249
15.1.1 理解巴克斯范式(Backus Nauer Form[BNF])语法 249
15.1.2 理解结构树 250
15.1.3 注册脚本示例 251
15.1.4 使用可重置参数(Registrar的预处理器) 253
15.1.5 激活脚本 255
15.2 设置Rgeistrar代码的静态连接 257
15.3.4 连接点 258
15.3.3 COM模块 258
15.3 ATL类概述 258
15.3.1 类工厂(Class Factories) 258
15.3.2 类信息 258
15.3.5 控件——普通支持 259
15.3.6 数据传输 259
15.3.7 数据类型 259
15.3.8 对重接口(Dual) 260
15.3.9 错误信息 260
15.3.10 接口指针 260
15.3.11 IUnknown实现 260
15.3.12 对象安全 261
15.3.13 连续性 261
15.3.14 属性和属性页面 261
15.3.19 线程交换 262
15.3.21 UI支持 262
15.3.20 线程模型和Critical段 262
15.3.16 运行对象 262
15.3.18 Tear-Off接口 262
15.3.17 位置信息 262
15.3.15 注册表支持 262
15.3.22 窗口支持 263
附录A CWnd类和常用控件类及其成员函数 264
A.1 CWnd类 264
A.2 CButton类 276
A.3 CEdit类 278
A.4 CScrollBar类 281
A.5 CComboBox类 283
A.6 CListBox类 287