第1章 Visual C++开发环境 1
1.1 集成开发环境窗口 1
1.2 AppWizard与ClassWizard 2
1.2.1 应用程序向导App Wizard 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 常用文本输出函数 68
3.5 位图 70
3.5.1 设备相关位图和设备无关位图 70
3.5.2 位图操作函数 71
3.5.3 位图的显示 72
3.6 应用实例 74
3.6.1 实例简介 74
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 属性页对话框 126
5.5 通用对话框 130
5.5.1 CFileDialog类 130
5.5.2 CColorDialog类 132
5.5.3 CFontDialog类 134
5.5.4 CPrintDialog类和CPageSetupDialog类 135
5.5.5 CFindReplaceDialog类 136
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类 156
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 进度条的创建 172
6.9.2 进度条的风格 172
6.9.3 进度条的基本操作 173
6.10 应用实例 175
6.10.1 实例简介 175
6.10.2 创建过程 175
习题 178
第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文档读写机制 195
7.3.2 MFC文档序列化 198
7.3.3 自定义可序列化的类 200
7.4 分割视图窗口 201
7.4.1 CSplitterWnd类 202
7.4.2 分割视图窗口的实现技术 202
7.5 多文档的应用程序 208
7.5.1 多文档应用程序的界面 208
7.5.2 多视图的应用程序 209
7.5.3 多类型的应用程序 213
7.6 应用实例 217
7.6.1 实例简介 217
7.6.2 创建过程 217
习题 222
第8章 打印编程 224
8.1 基本打印功能 224
8.1.1 打印原理 224
8.1.2 CPrintInfo类 227
8.1.3 打印过程 228
8.1.4 打印预览 229
8.2 设置打印坐标系 230
8.2.1 Windows映射模式 230
8.2.2 映射模式的设置 231
8.3 多页打印 232
8.3.1 默认打印存在的不足 232
8.3.2 实现多页打印功能 233
8.4 高级打印 236
8.4.1 页眉和页脚 236
8.4.2 设置页边距 236
习题 240
第9章 动态链接库编程 241
9.1 概述 241
9.1.1 动态链接库的概念 241
9.1.2 动态链接库和静态链接库的区别 241
9.1.3 使用动态链接库的优点 242
9.1.4 DLL文件的存放位置 242
9.1.5 动态链接库的分类 242
9.2 创建MFC DLL 243
9.2.1 使用DEF文件 243
9.2.2 使用关键字_declspec(dllexport) 246
9.2.3 两种导出函数方法的比较 247
9.3 使用MFC DLL 248
9.3.1 使用隐式链接 248
9.3.2 使用显式链接 251
9.4 MFC扩展DLL 253
9.4.1 创建MFC扩展DLL 253
9.4.2 使用MFC扩展DLL 255
习题 256
第10章 多线程编程 258
10.1 概述 258
10.1.1 问题的提出 258
10.1.2 进程和线程 259
10.1.3 MFC对多线程编程的支持 260
10.2 线程的创建 260
10.2.1 创建工作者线程 261
10.2.2 创建用户界面线程 263
10.3 线程的控制 265
10.3.1 终止一个线程 265
10.3.2 悬挂和恢复线程 265
10.3.3 线程的优先级 266
10.4 线程间的通信 271
10.4.1 使用全局变量进行通信 271
10.4.2 使用自定义消息进行通信 271
10.5 线程间的同步 273
10.5.1 使用CCriticalSection类 273
10.5.2 使用CMutex类 276
10.5.3 使用CSemaphore类 277
10.5.4 使用CEvent类 280
习题 282
第11章 数据库编程 283
11.1 概述 283
11.1.1 数据库和数据库管理系统 283
11.1.2 关系数据库 284
11.1.3 SQL语言 284
11.1.4 Visual C++中访问数据库的相关技术 286
11.2 ODBC技术 287
11.2.1 ODBC概述 287
11.2.2 MFC ODBC数据库类 289
11.2.3 CRecordset类 289
11.3 创建MFC ODBC数据库应用程序 293
11.3.1 准备数据库 293
11.3.2 注册数据源 293
11.3.3 创建应用程序框架 295
11.3.4 实现数据库程序的基本功能 297
11.3.5 实现数据库程序的高级功能 300
11.4 ADO技术 305
11.4.1 ADO访问数据源的特点 305
11.4.2 ADO的结构 305
11.4.3 ADO常用对象 306
11.4.4 _bstr_t和_variant_t类 309
11.4.5 在Visual C++中使用ADO 309
11.5 ADO数据库应用实例 312
11.5.1 实例简介 312
11.5.2 创建过程 312
习题 319
第12章 多媒体编程 321
12.1 多媒体程序设计基础 321
12.1.1 多媒体程序设计的原理 321
12.1.2 多媒体数据格式 321
12.2 Windows的多媒体服务 322
12.2.1 高级音频函数 322
12.2.2 媒体控制接口 326
12.2.3 MCIWnd窗口类 329
12.3 ActiveX控件 333
12.3.1 ActiveX控件简介 333
12.3.2 ActiveX控件的使用 334
12.3.3 使用ActiveMovie控件的播放器 336
习题 339
第13章 综合应用实例 340
13.1 功能描述 340
13.2 系统分析 341
13.2.1 实例分析 341
13.2.2 计算机的决策方式 341
13.3 数据结构设计 344
13.3.1 CManager类 344
13.3.2 CStatus类 347
13.3.3 CChess类 350
13.3.4 CPlayer类 351
13.3.5 CComputer类 352
13.4 系统详细设计 353
13.4.1 项目创建 353
13.4.2 界面设计 353
13.4.3 资源编辑 357
13.4.4 棋盘的定位及显示 359
13.4.5 成员的添加与初始化 360
13.4.6 光标类型的切换 361
13.4.7 游戏设置 362
13.4.8 落子操作 362
13.4.9 右视图功能的实现 370
13.4.10 悔棋功能的实现 375
13.4.11 重新开始游戏功能实现 378
13.4.12 文件保存及打开 379
13.4.13 计时功能的实现 379
13.4.14 日志及排行榜功能的实现 382
13.4.15 选手姓名的读入 388
13.4.16 音效功能的实现 389
13.4.17 游戏启动封面的设计 391
附录 392
实验1 框架的创建与消息处理(2学时) 392
实验2 图形与文本(4学时) 392
实验3 菜单(2学时) 393
实验4 工具栏与状态栏(2学时) 394
实验5 对话框(2学时) 394
实验6 标准控件(2学时) 395
实验7 通用控件(2学时) 395
实验8 文档与视图(4学时) 396
实验9 打印编程(2学时) 397
实验10 动态链接库编程(2学时) 397
实验11 多线程编程(2学时) 397
实验12 ODBC数据库编程(2学时) 398
实验13 ADO数据库编程(2学时) 398
实验14 多媒体编程(2学时) 399
参考文献 400