第1章 Visual C++开发环境 1
1.1 集成开发环境窗口 1
1.2 AppWizard与ClassWizard 2
1.2.1 应用程序向导AppWizard 2
1.2.2 类向导ClassWizard 3
1.3 项目与项目工作区 5
1.3.1 项目 5
1.3.2 项目工作区 5
1.4 集成开发环境的菜单栏 7
1.4.1 File菜单 7
1.4.2 Edit菜单 7
1.4.3 View菜单 8
1.4.4 Insert菜单 8
1.4.5 Project菜单 9
1.4.6 Build菜单 9
1.4.7 Tools菜单 9
1.4.8 Window菜单 9
1.4.9 Help菜单 10
1.5 集成开发环境的工具栏 10
1.5.1 Standard工具栏 11
1.5.2 Build MiniBar工具栏 11
1.5.3 WizardBar工具栏 11
1.6 资源与资源编辑器 12
1.6.1 资源和资源符号 12
1.6.2 资源编辑器 12
习题 16
第2章 MFC应用程序概述 18
2.1 Windows应用程序概述 18
2.1.1 窗口 18
2.1.2 消息和事件 18
2.1.3 基本数据类型 20
2.1.4 句柄 20
2.2 MFC应用程序框架 21
2.2.1 创建MFC应用程序框架 21
2.2.2 MFC应用程序框架结构类 27
2.2.3 MFC应用程序的分析 29
2.2.4 文档/视图结构 31
2.3 消息映射与消息处理 32
2.3.1 消息的类别及其描述 32
2.3.2 MFC消息映射机制 34
2.3.3 自定义消息处理 36
2.4 程序调试 37
2.4.1 查找源程序中的语法错误 38
2.4.2 调试器 38
2.4.3 跟踪调试程序 39
2.4.4 MFC调试宏 43
2.4.5 Dump()调试函数 44
2.5 应用实例 44
2.5.1 实例简介 44
2.5.2 创建过程 44
习题 46
第3章 图形与文本 49
3.1 图形设备接口和设备环境 49
3.1.1 图形设备接口 49
3.1.2 设备环境 50
3.1.3 设备环境类 50
3.1.4 颜色的设置 51
3.1.5 获取设备环境 52
3.1.6 编程实例 52
3.2 GDI对象类CGdiObject 55
3.3 画笔和画刷的使用 56
3.3.1 使用库存对象 56
3.3.2 创建和使用自定义画笔 58
3.3.3 创建和使用自定义画刷 59
3.4 处理文本 61
3.4.1 设置文本显示属性 61
3.4.2 设置字体 62
3.4.3 格式化文本 66
3.4.4 常用文本输出函数 69
3.5 位图 71
3.5.1 设备相关位图和设备无关位图 71
3.5.2 位图操作函数 71
3.5.3 位图的显示 72
3.6 应用实例 73
3.6.1 实例简介 73
3.6.2 创建过程 74
习题 76
第4章 菜单、工具栏和状态栏 78
4.1 菜单 78
4.1.1 菜单的类型 78
4.1.2 编辑菜单 79
4.1.3 建立消息映射 82
4.1.4 菜单的有效控制 83
4.1.5 快捷菜单的创建 85
4.1.6 动态菜单 88
4.1.7 基于对话框的菜单 91
4.2 工具栏 92
4.2.1 编辑工具栏 93
4.2.2 建立消息映射 94
4.2.3 自定义工具栏的操作 95
4.3 状态栏 99
4.3.1 状态栏类的继承关系 99
4.3.2 状态栏类的成员函数 99
4.3.3 状态栏操作 100
4.4 应用实例 102
4.4.1 实例简介 102
4.4.2 创建过程 102
习题 108
第5章 对话框 110
5.1 对话框概述 110
5.1.1 对话框的类型 110
5.1.2 对话框的CDialog类 110
5.1.3 对话框的组成 111
5.2 模态对话框 112
5.2.1 设计对话框模板资源 112
5.2.2 设计对话框类 115
5.2.3 运行对话框 119
5.2.4 对话框数据交换和校验机制 120
5.3 非模态对话框 121
5.3.1 非模态对话框的特点 121
5.3.2 窗口对象的自动清除 124
5.4 属性页对话框 127
5.5 通用对话框 130
5.5.1 CFileDialog类 130
5.5.2 CColorDialog类 132
5.5.3 CFontDialog类 133
5.5.4 CPrintDialog类和CPageSetupDialog类 136
5.5.5 CFindReplaceDialog类 137
5.6 应用实例 137
5.6.1 实例简介 137
5.6.2 创建过程 137
习题 141
第6章 Windows常用控件 143
6.1 控件概述 143
6.1.1 控件的创建 143
6.1.2 控件的组织 144
6.1.3 控件的共有属性 145
6.1.4 控件的访问 145
6.2 CStatic类控件 146
6.2.1 静态文本控件 146
6.2.2 图片控件 147
6.3 CEdit类控件 148
6.3.1 编辑框的风格 148
6.3.2 编辑框的基本操作 149
6.3.3 编辑框的通知消息 150
6.4 CButton类控件 151
6.4.1 概述 151
6.4.2 按钮控件的基本操作 152
6.4.3 按钮控件的通知消息 153
6.4.4 CBitmapButton类 155
6.5 CListBox类控件 157
6.5.1 列表框的风格 157
6.5.2 列表框的基本操作 158
6.5.3 列表框的通知消息 159
6.6 CComboBox类控件 162
6.6.1 组合框的属性 162
6.6.2 组合框的基本操作 163
6.6.3 组合框的通知消息 164
6.7 CSpinButtonCtrl类控件 166
6.7.1 旋转按钮控件常用的风格 166
6.7.2 旋转按钮控件的基本操作 167
6.7.3 旋转按钮控件的通知消息 167
6.8 CSliderCtrl类控件 169
6.8.1 滑动条的风格 169
6.8.2 滑动条的基本操作 170
6.8.3 滑动条的通知消息 170
6.9 CProgressCtrl类控件 172
6.9.1 进度条的创建 173
6.9.2 进度条的风格 173
6.9.3 进度条的基本操作 173
6.10 应用实例 175
6.10.1 实例简介 175
6.10.2 创建过程 175
习题 179
第7章 文档与视图 180
7.1 文档/视图结构 180
7.1.1 概述 180
7.1.2 文档与视图之间的相互作用 185
7.1.3 使用文档/视图结构的意义 186
7.2 简单的文档/视图结构应用程序 187
7.2.1 文档中数据的初始化 187
7.2.2 文档中数据的清理 188
7.2.3 简单的文档/视图结构应用程序 188
7.2.4 集合类的使用 190
7.3 文档的读写 195
7.3.1 MFC文档读写机制 196
7.3.2 MFC文档序列化 198
7.3.3 自定义可序列化的类 201
7.4 分割视图窗口 202
7.4.1 CSplitterWnd类 203
7.4.2 分割视图窗口的实现技术 203
7.5 多文档的应用程序 208
7.5.1 多文档应用程序的界面 208
7.5.2 多视图的应用程序 209
7.5.3 多类型的应用程序 213
7.6 应用实例 218
7.6.1 实例简介 218
7.6.2 创建过程 218
习题 224
第8章 打印编程 226
8.1 基本打印功能 226
8.1.1 打印原理 226
8.1.2 CPrintInfo类 229
8.1.3 打印过程 230
8.1.4 打印预览 231
8.2 设置打印坐标系 232
8.2.1 Windows映射模式 232
8.2.2 映射模式的设置 233
8.3 多页打印 234
8.3.1 默认打印存在的不足 234
8.3.2 实现多页打印功能 235
8.4 高级打印 238
8.4.1 页眉和页脚 238
8.4.2 设置页边距 238
习题 242
第9章 动态链接库编程 243
9.1 概述 243
9.1.1 动态链接库的概念 243
9.1.2 动态链接库和静态链接库的区别 243
9.1.3 使用动态链接库的优点 244
9.1.4 DLL文件的存放位置 244
9.1.5 动态链接库的分类 244
9.2 创建MFC DLL 245
9.2.1 使用DEF文件 245
9.2.2 使用关键字_declspec(dllexport) 248
9.2.3 两种导出函数方法的比较 249
9.3 使用MFC DLL 250
9.3.1 使用隐式链接 250
9.3.2 使用显式链接 253
9.4 MFC扩展DLL 255
9.4.1 创建MFC扩展DLL 256
9.4.2 使用MFC扩展DLL 258
习题 258
第10章 多线程编程 260
10.1 概述 260
10.1.1 问题的提出 260
10.1.2 进程和线程 261
10.1.3 MFC对多线程编程的支持 262
10.2 线程的创建 262
10.2.1 创建工作者线程 263
10.2.2 创建用户界面线程 265
10.3 线程的控制 267
10.3.1 终止一个线程 267
10.3.2 悬挂和恢复线程 267
10.3.3 线程的优先级 267
10.4 线程间的通信 273
10.4.1 使用全局变量进行通信 273
10.4.2 使用自定义消息进行通信 273
10.5 线程间的同步 275
10.5.1 使用CCriticalSection类 275
10.5.2 使用CMutex类 278
10.5.3 使用CSemaphore类 279
10.5.4 使用CEvent类 282
习题 284
第11章 数据库编程 285
11.1 概述 285
11.1.1 数据库和数据库管理系统 285
11.1.2 关系数据库 286
11.1.3 SQL语言 286
11.1.4 Visual C++中访问数据库的相关技术 288
11.2 ODBC技术 289
11.2.1 ODBC概述 289
11.2.2 MFC ODBC数据库类 291
11.2.3 CRecordset类 291
11.3 创建MFC ODBC数据库应用程序 295
11.3.1 准备数据库 295
11.3.2 注册数据源 295
11.3.3 创建应用程序框架 297
11.3.4 实现数据库程序的基本功能 299
11.3.5 实现数据库程序的高级功能 302
11.4 ADO技术 307
11.4.1 ADO访问数据源的特点 307
11.4.2 ADO的结构 307
11.4.3 ADO常用对象 308
11.4.4 _bstr_t和_variant_t类 311
11.4.5 在VC++中使用ADO 311
11.5 ADO数据库应用实例 314
11.5.1 实例简介 314
11.5.2 创建过程 315
习题 322
第12章 多媒体编程 324
12.1 多媒体程序设计基础 324
12.1.1 多媒体程序设计的原理 324
12.1.2 多媒体数据格式 324
12.2 Windows的多媒体服务 325
12.2.1 高级音频函数 325
12.2.2 媒体控制接口 329
12.2.3 MCIWnd窗口类 333
12.3 ActiveX控件 336
12.3.1 ActiveX控件简介 336
12.3.2 ActiveX控件的使用 337
12.3.3 使用ActiveMovie控件的播放器 339
习题 342
参考文献 343