前言 1
第1章 Visual C++入门 1
丛书序 1
1.1.3 Visual C++开发环境的安装 2
1.1.2 Visual C++的主要优点 2
1.1 Visual C++ 6.0简介 2
1.1.1 Visual C++概述 2
1.2.1 创建应用程序 5
1.2 第一个应用程序 5
1.2.2 编译、连接、运行 6
1.3.1 主窗口布局 7
1.3 集成开发环境简介 7
1.2.3 例程分析 7
1.3.2 ClassView选项卡 8
1.3.4 FileView选项卡 9
1.3.3 ResourceView选项卡 9
1.3.7 类向导 10
1.3.6 菜单栏和工具栏 10
1.3.5 编辑区 10
1.4 程序调试 11
1.3.8 调试与输出窗口 11
1.4.2 例程分析 12
1.4.1 创建调试例程 12
1.4.3 添加测试代码 13
1.4.4 进入调试状态 14
1.4.7 Memory窗口 15
1.4.6 Call Stack窗口 15
1.4.5 Watch窗口 15
1.4.9 Registers窗口 16
1.4.8 Variables窗口 16
1.5 本章小结 17
1.4.10 Disassembly窗口 17
第2章 Visual C++语言 19
2.1.2 例程分析 20
2.1.1 创建例程 20
2.1 搭建学习环境 20
2.1.3 文件E0201.cpp 21
2.2.1 标识符与保留字 22
2.2 基础知识 22
2.1.4 修改代码 22
2.2.2 常量与变量 23
2.2.3 基本数据类型 24
2.2.4 派生数据类型 25
2.2.5 字符串类型 27
2.3.2 关系运算符 28
2.3.1 算术运算符 28
2.3 基本运算符 28
2.3.5 特殊运算符 29
2.3.4 按位运算符 29
2.3.3 逻辑运算符 29
2.4.1 sizeof运算符 30
2.4 sizeof、new delete运算符 30
2.4.2 new与delete运算符 31
2.5.1 if语句 32
2.5 控制结构 32
2.5.4 while语句 33
2.5.3 goto语句 33
2.5.2 switch语句 33
2.5.5 for语句 34
2.6.1 概述 35
2.6 函数 35
2.5.6 break和continue语句 35
2.6.3 模板函数 36
2.6.2 内联函数 36
2.6.4 重载函数 37
2.6.5 函数参数的默认值 38
2.6.7 指向函数的指针 39
2.6.6 不定参数函数 39
2.7.1 概述 40
2.7 类与对象 40
2.7.3 类的继承 41
2.7.2 类的封装 41
2.7.4 构造函数与析构函数 42
2.8.1 注释 43
2.8 注释与预处理 43
2.8.4 条件编译指令 44
2.8.3 宏定义 44
2.8.2 嵌入指令 44
2.9 异常处理 45
2.10 本章小结 47
第3章 窗口与对话框 49
3.1.2 窗口例程 50
3.1.1 概述 50
3.1 窗口 50
3.2.1 应用程序类 51
3 2 应用程序框架类 51
3.2.2 框架窗口类 52
3.2.3 文档类 54
3.2.4 视图类 55
3.3.2 设置数据库支持 56
3.3.1 设置应用程序类型 56
3.3 应用程序向导 56
3.3.3 设置复合文档支持 57
3.3.4 设置用户界面功能 58
3.3.5 设置工程样式与MFC类库 59
3.4.1 去掉开始子窗口 60
3.4 窗口高级应用 60
3.3.6 设置生成的类 60
3.4.2 自定义窗口样式 61
3.4.3 创建不规则形状窗口 62
3.4.4 创建拆分窗口 63
3.5.2 例程分析 65
3.5.1 对话框例程 65
3.5 对话框 65
3.6.1 修改对话框模板 68
3.6 对话框模板编辑器 68
3.6.3 控件的修改 69
3.6.2 控件的添加与删除 69
3.6.5 测试对话框模板 70
3.6.4 设置控件的Tab顺序值 70
3.7.1 概述 71
3.7 消息对话框 71
3.7.2 消息对话框样式 72
3.8.2 非模态对话框 73
3.8.1 模态对话框 73
3.7.3 消息对话框返回值 73
3.8 模态对话框与非模态对话框 73
3.8.3 综合例程 74
3.9.1 文件对话框 77
3.9 公用对话框 77
3.9.2 “字体”对话框 78
3.9.4 “页面设置”对话框 79
3.9.3 “颜色”对话框 79
3.9.5 “打印”对话框 80
3.9.6 “查找替换”对话框 81
3.10 本章小结 82
第4章 控件 83
4.1.2 控件列表 84
4.1.1 概述 84
4.1 控件简介 84
4.1.3 控件例程 85
4.2.3 添加控件例程 86
4.2.2 手动添加控件 86
4.2 创建控件 86
4.2.1 利用对话框模板编辑器 86
4.3.1 概述 87
4.3 标签、文本框和按钮 87
4.3.2 综合例程 88
4.3.3 改变标签的颜色 89
4.3.4 限制文本框中的字符输入 90
4.3.5 图标按钮与位图按钮 92
4.4.1 概述 93
4.4 选项组、复选框和单选按钮 93
4.4.3 综合例程 94
4.4.2 控件组合使用 94
4.5.2 综合例程 96
4.5.1 概述 96
4.5 列表、列表框和下拉列表框 96
4.5.3 删除列表中的多条记录 99
4.5.4 列表框添加位图背景 100
4.6.2 综合例程 102
4.6.1 概述 102
4.6 树控件 102
4.6.3 构建系统目录树 104
4.7.1 概述 105
4.7 选项卡控件 105
4.7.2 综合例程 106
4.8.1 概述 108
4.8 微调按钮、滑块和进度条 108
4.7.3 例程分析 108
4.8.2 综合例程 109
4.9 本章小结 110
第5章 菜单、工具栏与状态栏 111
5.1.2 菜单的构成 112
5.1.1 菜单简介 112
5.1 菜单 112
5.2.2 菜单编辑器 113
5.2.1 创建例程 113
5.1.3 菜单的实现过程 113
5.2 普通菜单 113
5.2.3 定制菜单 114
5.2.4 定制快捷键与说明信息 115
5.2.6 添加消息响应函数 116
5.2.5 定制对话框模板 116
5.2.7 测试例程 118
5.3.2 创建例程并定制浮动菜单 119
5.3.1 浮动菜单的实现过程 119
5.3 浮动菜单 119
5.3.3 添加载入和显示代码 120
5.4 图形化菜单 121
5.3.4 完善并测试 121
5.4.3 综合例程 122
5.4.2 将文本替换成图形 122
5.4.1 添加菜单命令图标 122
5.5.2 工具栏的实现 124
5.5.1 工具栏简介 124
5.5 工具栏 124
5.5.3 为工具栏添加控件 126
5.5.4 为工具栏添加下拉箭头按钮 128
5.6.2 状态栏的实现 130
5.6.1 状态栏简介 130
5.6 状态栏 130
5.7 本章小结 131
第6章 消息 133
6.1.3 消息类型 134
6.1.2 消息机制 134
6.1 Windows消息 134
6.1.1 消息概述 134
6.2.2 消息映射 135
6.2.1 消息响应 135
6.2 消息处理 135
6.2.4 添加消息响应函数 136
6.2.3 消息响应函数 136
6.3.1 键盘消息 139
6.3 标准消息 139
6.3.2 鼠标消息 140
6.3.3 窗口消息 141
6.3.4 定时消息 143
6.4 命令消息 144
6.5 通知消息 145
6.6.1 自定义消息的基本步骤 146
6.6 自定义消息 146
6.6.3 自定义消息例程 147
6.6.2 消息传递 147
6.7 本章小结 149
第7章 文本、图形与打印 151
7.1.3 设备环境类 152
7.1.2 例程及分析 152
7.1 Windows图形系统 152
7.1.1 概述 152
7.2.1 使用TextOut显示文本 154
7.1 文本函数 154
7.2.2 使用DrawText显示指定格式文本 155
7.2.3 使用ExtTextOut显示字符串 156
7.3.1 对齐方式 157
7.3 文本属性 157
7.2.4 使用TabbedTextOut显示字符串 157
7.3.2 字符间距 158
7.3.4 文本颜色 159
7.3.3 背景模式 159
7.3.5 背景颜色 160
7.3.6 字符属性 161
7.4.1 使用库存字体 162
7.4 字体 162
7.4.2 使用CreateFont创建字体 163
7.4.3 使用CreateFontIndirect创建字体 164
7.5 绘图函数 165
7.5.1 点线函数 166
7.5.2 形状函数 167
7.5.3 填充函数 169
7.5.4 位图函数 170
7.6 画笔与画刷 172
7.6.2 自定义画笔 173
7.6.1 使用库存画笔与画刷 173
7.6.3 自定义画刷 175
7.7.1 设备坐标与逻辑坐标 176
7.7 坐标系统 176
7.7.2 映像模式 177
7.7.3 视口与逻辑窗口 178
7.7.4 MM_ANISOTROPIC映像模式 179
7.7.5 MM_ISOTROPIC映像模式 180
7.8.1 CPrintInfo类:实现了打印及打印预览的功能 181
7.8 打印 181
7.8.2 CPageSetupDialog类:实现打印页面设置 182
7.8.3 打印实现 183
7.9 本章小结 185
第8章 文件操作 187
8.1.2 文件的打开和关闭 188
8.1.1 文件概述 188
8.1 C++文件 188
8.1.3 文件的读写 189
8.1.4 文件的定位 191
8.2.1 文件的打开和关闭 192
8.2 CFile类 192
8.2.2 文件的读写 193
8.2.3 文件的定位 195
8.2.4 文件的状态信息 196
8.2.5 文件异常操作 197
8.3.2 自动实现串行化 198
8.3.1 串行化概述 198
8.3 串行化 198
8.3.3 手动实现串行化 200
8.4.1 CArchive对象 202
8.4 CArchive类 202
8.4.2 读写操作过程 203
8.4.3 对象状态 204
8.4.4 读写操作函数 205
8.4.5 应用例程 206
8.5.1 使用临时文件 208
8.5 文件的相关操作 208
8.5.2 文件的查找 209
8.5.3 文件的复制与删除 210
8.5.4 文件删除到回收站 211
8.5.5 操作INI文件 213
8.6 本章小结 214
第9章 数据库访问概述 215
9.1.2 数据库技术的发展 216
9.1.1 数据库简介 216
9.1 数据库概述 216
9.1.4 数据库分类 217
9.1.3 数据库系统结构 217
9.2.1 关系模型 219
9.2 关系数据库 219
9.2.3 关系的完整性 220
9.2.2 关系的操作 220
9.2.4 数据库对象 221
9.2.5 规范化设计 222
9.3.1 SQL概述 223
9.3 结构化查询语言 223
9.3.2 数据定义语言 224
9.3.3 数据查询语言 227
9.3.4 数据操纵语言 228
9.3.5 数据控制语言 229
9.4.3 MFC ODBC 230
9.4.2 ODBC API 230
9.4 数据库访问技术 230
9.4.1 概述 230
9.4.6 ADO 231
9.4.5 OLE DB 231
9.4.4 DAO 231
9.5.2 添加数据库连接 232
9.5.1 创建数据库工程 232
9.5 数据库工程 232
9.5.3 使用数据库工程 234
9.5.4 查询工具栏 236
9.6.2 创建数据库 237
9.6.1 Access简介 237
9.6 Access数据库 237
9.6.3 添加、修改和删除表 238
9.6.4 为表建立关系 240
9.6.5 添加、修改和删除记录 241
9.6.7 压缩Access数据库 242
9.6.6 查询操作 242
9.7 本章小结 243
第10章 ODBC编程 245
10.1.2 ODBC数据源管理器 246
10.1.1 ODBC概述 246
10.1 ODBC基础 246
10.1.3 配置用户DSN 247
10.1.4 配置系统DSN 248
10.1.5 配置文件DSN 249
10.1.6 使用游标 250
10.2.2 ODBC API例程 251
10.2.1 ODBC API概述 251
10.2 使用ODBC API编程 251
10.2.3 ODBC API编程步骤 254
10.3 使用MFC ODBC编程 262
10.3.1 MFC ODBC例程 262
10.3.2 例程分析 264
10.3.3 MFC ODBC类 267
10.3.4 添加和删除记录 271
10.4 本章小结 273
第11章 DAO编程 275
11.2.1 创建Access数据库 276
11.2 MFC DAO例程 276
11.1 DAO简介 276
11.2.2 创建应用程序框架 277
11.2.3 定制数据库类 278
11.2.4 添加CE1101Set对象 279
11.2.5 访问数据库 280
11.3 MFC DAO类 281
11.2.6 例程分析 281
11.3.2 CDaoDatabase:数据库类 282
11.3.1 CDaoWorkspace:工作区类 282
11.3.3 CDaoTableDef:表定义类 285
11.3.4 CDaoQueryDef:查询定义类 286
11.3.5 CDaoRecordset:记录集类 287
11.3.6 CDaoRecordView:记录视图类 288
11.4.1 创建应用程序 289
11.4 使用MFC DAO编程 289
11.3.7 CDaoException:异常类 289
11.4.2 查询记录 290
11.4.4 修改记录 291
11.4.3 添加记录 291
11.5 本章小结 292
11.4.6 统计记录 292
11.4.5 删除记录 292
第12章 OLE DB编程 293
12.1.2 OLE DB框架模型 294
12.1.1 OLE DB简介 294
12.1 OLE DB概述 294
12.2.1 对象模型 295
12.2 OLE DB对象模型 295
12.2.2 对象的属性 296
12.2.3 属性结构和枚举类型 297
12.2.5 枚举器 299
12.2.4 设置和获取属性值 299
12.2.6 访问器 301
12.2.7 数据源 302
12.2.8 行集 303
12.2.9 会话 307
12.2.10 命令 308
12.2.11 事务 309
12.2.12 错误 311
12.3.2 列举枚举器和数据源 314
12.3.1 OLE DB API编程步骤 314
12.3 OLE DB API编程 314
12.3.3 创建数据源 317
12.4.1 MFC OLE DB编程 318
12.4 OLE DB高级编程 318
12.5.1 OLE DB消费者模板框架 320
12.5 OLE DB消费者模板 320
12.4.2 OLE DB模板 320
12.5.3 行集和绑定支持 321
12.5.2 通用数据源支持 321
12.5.6 创建OLE DB消费者 322
12.5.5 用户记录 322
12.5.4 表和命令支持 322
12.6.2 创建OLE DB提供者 325
12.6.1 OLE DB提供者模板框架 325
12.6 OLE DB提供者模板 325
12.6.3 例程分析 326
12.6.4 测试OLE DB提供者 327
12.7 本章小结 328
第13章 ADO编程 329
13.2 使用ActiveX控件 330
13.1.2 使用ADO的方法 330
13.1 ADO概述 330
13.1.1 ADO简介 330
13.2.2 数据绑定例程 331
13.2.1 数据绑定技术 331
13.2.3 ADO数据控件 333
13.2.4 ADO数据绑定控件 334
13.3.2 连接对象 340
13.3.1 ADO对象模型 340
13.3 ADO对象 340
13.3.3 命令对象 343
13.3.4 记录集对象 344
13.3.5 字段对象 347
13.3.7 参数对象 349
13.3.6 属性对象 349
13.3.8 错误对象 350
13.4.1 使用ADO对象的方法 351
13.4 使用ADO对象 351
13.4.3 创建ADO应用程序框架 353
13.4.2 使用ADO对象的编程步骤 353
13.4.4 初始化与释放COM环境 354
13.4.6 释放ADO对象 355
13.4.5 定义ADO对象 355
13.4.7 检索记录 356
13.4.8 编辑记录 357
13.4.9 数据绑定 359
13.5 本章小结 361
第14章 动态链接库 363
14.1.2 DLL特点 364
14.1.1 DLL概述 364
14.1 DLL基础 364
14.1.3 DLL工作原理 365
14.2.1 Win32 DLL例程 366
14.2 DLL基本框架 366
14.1.4 DLL类型 366
14.2.2 DllMain函数 368
14.2.3 MFC DLL例程 369
14.2.4 MFC DLL类型 370
14.3.1 查看导出信息 372
14.3 DLL导出函数 372
14.3.2 使用DEF文件导出函数 373
14.3.3 使用_declspec(dllexport)关键字导出函数 375
14.3.4 使用AFX_EXT_CLASS宏导出类 376
14.4.1 从DLL中导出数据 377
14.4 DLL中的数据和资源 377
14.4.2 DLL中的资源 378
14.5.1 隐式链接 379
14.5 DLL的使用 379
14.5.2 显式链接 380
14.5.3 使用DLL资源 382
14.6.1 创建工作空间 384
14.6 DLL的调试 384
14.6.2 从外部程序调试DLL 386
14.7 本章小结 387
14.6.3 调用外部程序调试DLL 387
第15章 多媒体编程 389
15.1.2 音频媒体 390
15.1.1 图像媒体 390
15.1 概述 390
15.1.4 多媒体资源 391
15.1.3 视频媒体 391
15.2.1 BMP文件结构 393
15.2 图像编程 393
15.2.2 BMP文件读写 394
15.2.3 BMP文件显示 399
15.2.4 JPEG/GIF文件显示 401
15.3.1 播放WAVE资源 405
15.3 音频编程 405
15.3.3 MCI控制播放 407
15.3.2 播放WAVE文件 407
15.3.4 音量控制 411
15.4.1 MCIWnd控制播放 416
15.4 视频编程 416
15.4.2 播放Flash文件 417
15.5 本章小结 419
第16章 多线程编程 421
16.1.2 线程的类型 422
16.1.1 进程和线程 422
16.1 多线程概述 422
16.2.1 创建应用程序框架 423
16.2 线程例程 423
16.2.3 例程分析 424
16.2.2 添加线程 424
16.3.1 CWinThread类 425
16.3 线程的使用 425
16.3.2 启用线程 426
16.3.3 用户界面线程 427
16.3.4 工作者线程 431
16.4.1 正常终止 433
16.4 线程的终止 433
16.4.3 线程的退出码 434
16.4.2 异常终止 434
16.5.1 通信机制 435
16.5 线程的通信 435
16.5.2 用户界面线程通信 436
16.5.3 工作者线程通信 438
16.6.1 同步对象 439
16.6 线程的同步 439
16.6.2 同步访问对象 441
16.6.3 使用信号量对象 443
16.6.4 使用临界区对象 444
16.6.5 使用互斥量对象 446
16.6.6 使用事件对象 447
16.7 本章小结 450
第17章 网络通信 451
17.1.1 OSI参考模型 452
17.1 网络基础 452
17.1.2 TCP/IP模型 453
17.1.3 TCP/IP基本概念 454
17.1.5 数据包格式 455
17.1.4 数据包的封装 455
17.2.1 套接字 457
17.2 Winsock API编程 457
17.2.3 Winsock编程模型 458
17.2.2 Winsock的启动和终止 458
17.2.4 Winsock I/O模型 462
17.2.5 基于Winsock的聊天室 463
17.3.1 CAsyncSocket类 470
17.3 MFC Sockets编程 470
17.3.3 CSocket类及其编程模型 472
17.3.2 CAsyncSocket编程模型 472
17.3.4 基于CSocket的聊天室 473
17.4.1 获取主机名和IP地址 481
17.4 本网络应用 481
17.4.2 获取网卡的MAC地址 482
17.4.3 获取安装的协议 484
17.5 本章小结 487
第18章 ActiveX控件 489
18.1.2 属性、方法和事件 490
18.1.1 ActiveX控件 490
18.1 ActiveX控件概述 490
18.1.3 基本组件 491
18.2.1 创建控件工程 492
18.2 开发MFC ActiveX控件 492
18.2.2 控件工程框架 494
18.2.3 添加库存属性 495
18.2.4 添加用户定义属性 496
18.2.5 添加属性页 499
18.2.6 添加方法 500
18.2.7 添加事件 501
18.2.9 绘制控件 502
18.2.8 持久性 502
18.3.1 ActiveX控件测试容器 503
18.3 测试ActiveX控件 503
18.3.2 在HTML中测试 504
18.3.3 编写控件容器程序 505
18.4.1 创建控件工程 506
18.4 开发ATL ActiveX控件 506
18.4.2 控件注册 508
18.4.3 添加用户定义属性 509
18.4.4 添加属性页 512
18.4.5 添加方法 515
18.4.6 添加事件 516
18.4.7 持久性 518
18.4.8 绘制控件 518
18.5 本章小结 519
第19章 注册表、外壳扩展与帮助 521
19.1 注册表 522
19.1.1 概述 522
19.1.2 注册表API 522
19.1.3 注册表API例程 527
19.1.4 CRegKey类 529
19.1.5 CRegKey例程 531
19.2.2 上下文菜单扩展 532
19.2 外壳扩展 532
19.2.1 概述 532
19.2.3 支持IShellExtInit接口 534
19.2.4 支持IContextMenu接口 536
19.2.5 添加文件复制功能 539
19.2.6 添加组件注册功能 542
19.2.7 注册上下文菜单扩展 545
19.3 帮助 547
19.3.1 HLP帮助的制作 547
19.3.2 HLP帮助的启动 548
19.3.3 CHM帮助的制作 549
19.3.4 CHM帮助的启动 550
19.4 本章小结 551
附录A ASCII码对应表 553
附录B MFC类库中的消息映射函数 555
附录C 本书涉及到的例程 561