标题：VisualC++程序设计全程指南
宣传语
1、 知识全面，实例精彩，指导性强
VC基础、开发进阶、专题应用、实战演练，循序渐进地全面讲解Visual C++程序开发的方方面面。
2、 用实例说话，讲解详细，通俗易懂
全书包含了100来个实例，对程序代码提供详细的标注，让读者掌握更多的编程技术和注意事项。
前 言
Visual C++ 6.0（简称“VC”）是Microsoft公司推出的一种开发Windows应用程序的高级语言，相比其他的开发语言，如Visual Basic等，具有更为强大的功能和更为高效的执行效率。它提供了程序设计领域中所涉及的多种技术，如文件访问、图形图像处理、网络通信、多媒体和数据处理等，VC几乎可以开发任何一个领域所需要的应用系统。VC以其功能强大、运行速度快，并且对计算机配置要求低而受到广大开发人员的欢迎。
本书特色
1、用实例说话
全书包含大量而实用的实例，几乎每一章节都有对应的实例，以涵盖VC编程的多个知识点。其中既有反映技术要点的小实例，也有比较大型的综合实例，读者在开发过程中遇到的问题基本可以在这些实例中找到答案。
2、知识全面，通俗易懂
全书内容由浅入深且表达清晰，从创建项目开始逐步介绍各种复杂的应用，即使是初学VC的开发人员也能够容易地掌握。
由于时间仓促和作者的水平有限，书中的错误和不妥之处在所难免，敬请读者批评指正。
编著者 
2008年10月
目 录
VC基础
第1章 Visual C++ 6.0配置 1
1.1 Visual C++ 6.0概述 2
1.2 Visual C++ 6.0的主要特点 2
1.3 Visual C++ 6.0开发环境 3
1.3.1 Visual C++ 6.0的软、硬件配置要求 3
1.3.2 安装Visual C++ 6.0 3
1.3.3 修复和卸载Visual C++ 6.0 5
1.4 Visual C++ 6.0的主要框架窗口 5
1.4.1 Visual C++ 6.0的开发环境 5
1.4.2 菜单栏 6
1.4.3 工具栏 9
1.4.4 工作区 9
1.4.5 代码编辑器 10
1.4.6 输出窗口 10
1.5 Visual C++实用工具 11
1.5.1 Spy++ 11
1.5.2 MFC Tracer 12
1.5.3 Error Lookup 12
1.6 向导程序 12
1.6.1 AppWizard 13
1.6.2 ClassWizard 14
1.7 第1个控制台应用程序 15
1.8 本章小结 18
第2章 C++语言基础 19
2.1 C++语言概述 20
2.2 C++程序的基本结构 20
2.3 基本数据类型、标识符和关键字 20
2.3.1 标识符和关键字 21
2.3.2 常量与变量 21
2.3.3 基本数据类型 21
2.4 运算符和表达式 23
2.4.1 运算符 23
2.5 数组、指针和结构体 26
2.5.1 数组类型 26
2.5.2 枚举类型 27
2.5.3 指针类型 27
2.5.4 结构类型 28
2.6 流程控制结构 29
2.6.1 顺序结构 29
2.6.2 选择结构 29
2.6.3 循环结构 33
2.6.4 控制转移语句 37
2.7 函数 38
2.7.1 定义和调用函数 39
2.7.2 函数重载 42
2.7.3 变量的作用域 43
2.8 类和对象 46
2.8.1 类的定义和实现 46
2.8.2 内联函数和友元 49
2.8.3 构造函数和析构函数 51
2.8.4 继承和派生 53
2.8.5 多态与虚函数 58
2.9 编译预处理 59
第3章 Windows编程模式 63
3.1 事件驱动程序 64
3.2 Windows API 64
3.3 WinMain函数 64
3.3.1 定义WinMain函数 65
3.3.2 创建窗口 65
3.4 消息队列 68
3.4.1 消息的概念 68
3.4.2 消息处理 68
3.4.3 消息分类 69
3.4.4 消息映射 70
3.4.5 发送消息 71
3.4.6 消息处理 73
3.5 MFC 74
3.5.1 MFC的发展历史 74
3.5.2 MFC基础类库 75
第4章 应用程序框架 78
4.1 创建应用程序框架 79
4.2 应用程序文件组成 83
4.2.1 工作区文件和项目文件 83
4.2.2 应用程序源文件和头文件 84
4.2.3 资源文件预编译头文件 84
4.3 应用程序框架的类结构 84
4.3.1 应用程序类 85
4.3.2 文档类 85
4.3.3 主框架类 86
4.3.4 视图类 87
4.3.5 对话框类 89
4.4 应用程序的执行过程 89
4.5 SDI和MDI 89
4.6 类向导ClassWizard 90
4.6.1 ClassWizard简介 90
4.6.2 创建新类 91
4.6.3 添加消息处理函数 92
4.6.4 添加成员变量 94
4.7 文档/视图结构 95
4.7.1 文档类 95
4.7.2 视图类 96
第5章 资源和资源编辑器 98
5.1 资源 99
5.2 资源编辑器 99
5.3 资源符号 101
5.4 资源符号浏览器 102
5.5 资源编辑器分类 102
5.5.1 对话框编辑器 102
5.5.2 菜单编辑器 106
5.5.3 加速键编辑器 107
5.5.4 串编辑器 109
5.5.5 图形编辑器 110
5.5.6 工具栏编辑器 111
第6章 菜单、工具栏和状态栏 113
6.1 菜单 114
6.1.1 CMenu类 114
6.1.2 菜单消息 116
6.1.3 菜单项 116
6.1.4 修改菜单属性 120
6.1.5 动态菜单 125
6.1.6 响应命令 128
6.2 工具栏 130
6.2.1 工具栏 130
6.2.2 工具栏位图和按钮 130
6.2.3 工具栏编辑器 131
6.2.4 工具栏类 135
6.3 状态栏 136
6.3.1 状态栏 136
6.3.2 状态栏结构 137
6.3.3 创建状态栏 138
6.3.4 CStatusBar类 142
6.4 综合实例 151
6.4.1 实例目的 151
6.4.2 实例要求 151
6.4.3 实例实现步骤 151
开发进阶
第7章 对话框 160
7.1 对话框基础知识 161
7.1.1 对话框简介 161
7.1.2 对话框构成 161
7.1.3 对话框类 161
7.2 创建对话框 162
7.2.1 创建对话框的流程 163
7.2.2 创建对话框资源 163
7.2.3 创建对话框类 166
7.3 消息对话框 170
7.3.1 简介 171
7.3.2 框架函数 172
7.4 模态对话框 173
7.5 非模态对话框 174
7.6 属性页对话框 180
7.6.1 CPropertySheet类 180
7.6.2 CPropertyPage类 183
7.7 通用对话框 189
7.7.1 文件对话框 189
7.7.2 查找和替换对话框 190
7.7.3 字体对话框 191
7.7.4 颜色对话框 192
7.7.5 打印对话框 193
7.7.6 页面设置对话框 194
第8章 Windows通用控件 195
8.1 传统控件通知消息 196
8.2 静态文本控件 197
8.2.1 使用静态文本控件 197
8.2.2 CStatic类的主要成员函数 198
8.3 文本编辑控件 200
8.3.1 使用文本编辑控件 201
8.3.2 CEdit类的主要成员函数 201
8.4 按钮控件 205
8.4.1 使用按钮控件 205
8.4.2 CButton类的主要成员函数 206
8.5 图片控件 208
8.6 滚动条控件 208
8.6.1 使用控件滚动条 208
8.6.2 滚动条消息 209
8.6.3 CScrollBar类的主要成员函数 209
8.7 列表框控件 210
8.7.1 使用控件列表框 210
8.7.2 ClistBox类的主要成员函数 212
8.8 组合框控件 214
8.8.1 使用组合框控件 214
8.8.2 CComboBox类的主要成员函数 215
8.9 新Win32控件 226
8.9.1 新Win32控件的通知消息 227
8.10 树形控件 228
8.10.1 使用树形控件 228
8.10.2 CTreeCtrl类的主要成员函数 230
8.11 旋转按钮控件 232
8.11.1 使用旋转按钮 232
8.11.2 CSpinButtonCtrl类的主要成员函数 233
8.12 滑动控件 233
8.12.1 使用滑动控件 234
8.12.2 CSliderCtrl类的主要成员函数 235
8.13 进度条控件 236
第9章 文本与图形处理 237
9.1 绘图基础知识 238
9.1.1 绘图的基本函数 238
9.2 设备上下文 242
9.2.1 设备上下文简介 243
9.2.2 CDC类 243
9.3 图形设备接口 244
9.3.1 GDI简介 244
9.3.2 GDI对象 245
9.4 数据结构类 245
9.4.1 CPoint类 245
9.4.2 CSize类 245
9.4.3 CRect类 245
9.5 画笔和画刷 246
9.5.1 画笔 246
9.5.2 CPen类 246
9.5.3 创建与调用画笔 247
9.5.4 画刷 249
9.5.5 CBrush类 250
9.5.6 创建与调用画刷 250
9.6 字体类 253
9.6.1 CFont类 253
9.6.2 主要成员函数 254
9.6.3 创建特殊的字体效果 256
9.7 位图类 259
9.8 映射模式 261
9.8.1 映射模式简介 261
9.8.2 自定义坐标系统 262
9.8.3 坐标转换 263
第10章 文件操作 265
10.1 串行化 266
10.1.1 MFC程序框架支持的文档结构 266
10.1.2 串行化类 267
10.1.3 直接使用串行化 268
10.2 CArchive类 269
10.2.1 CArchive对象 270
10.2.2 通过CArchive来串行化Cobject 270
10.2.3 CArchive操作 271
10.3 文件CFile类 274
10.3.1 打开和关闭文件 274
10.3.2 文件定位 275
10.3.3 文件的读写操作 276
10.3.4 文件管理 277
10.3.5 文件异常 283
10.4 文件对话框 292
10.4.1 使用CFileDialog 292
10.4.2 选择多个文件 293
10.4.3 设计所需的文件对话框 293
10.5 内存文件类 293
10.5.1 CMemFile类 294
10.5.2 CSharedFile类 294
10.6 文件输入/输出流 295
第11章 多线程 296
11.1 进程 297
11.1.1 Windows多进程程序设计 297
11.1.2 进程基础知识 297
11.1.3 创建新进程 298
11.1.4 进程管理 301
11.2 线程 304
11.2.1 线程基础知识 304
11.2.2 创建线程 306
11.2.3 线程优先级 307
11.2.4 挂起线程 307
11.2.5 终止线程 309
11.3 用户界面线程 310
11.4 工作者线程 314
11.5 线程间的通信 318
11.6 线程同步 324
11.6.1 互斥体 325
11.6.2 信号量 325
11.6.3 临界区 326
11.6.4 事件对象 327
11.6.5 信号 329
第12章 Windows动态链接库 337
12.1 动态链接库基础 338
12.1.1 DLL 338
12.1.2 动态链接和静态链接 338
12.1.3 DLL与进程的地址空间 338
12.1.4 动态链接库的分类 338
12.1.5 动态链接库的优点 339
12.2 DLL的出入口函数 340
12.2.1 DllMain()函数 341
12.2.2 DLL的导出函数 342
12.2.3 导出函数调用约定 343
12.2.4 函数名修饰约定 344
12.2.5 模块定义文件 345
12.3 程序链接 346
12.3.1 显式链接 346
12.3.2 隐式链接 347
12.4 非MFC DLL 348
12.5 常规DLL 351
12.6 扩展DLL 355
12.7 钩子函数 361
12.7.1 钩子的基本原理 362
12.7.2 钩子函数的类型 363
12.7.3 安装与卸载钩子 363
专题应用
第13章 网络编程 370
13.1 网络基础知识 371
13.1.1 网络分类 371
13.1.2 IP地址和端口 371
13.1.3 网络模型 371
13.1.4 数据封装 372
13.1.5 套接字 373
13.2 Socket概述 374
13.2.1 Socket简介 374
13.2.2 Socket编程 374
13.2.3 Windows Socket发展 374
13.2.4 Windows Sockets分类 375
13.2.5 Windows Sockets API 376
13.3 Windows Sockets的编程原理 377
13.3.1 套接字的类型 377
13.3.2 基于TCP的Socket编程 378
13.3.3 基于UDP的Socket编程 379
13.3.4 Winsock的启动和终止 379
13.3.5 错误检查和控制 380
13.3.6 流套接字编程模型 380
13.3.7 数据报套接字编程模型 382
13.4 WinSock的MFC类 382
13.4.1 CASyncSocket 383
13.4.2 CSocket 385
13.5 Winsock编程实例 386
13.6 WinInet编程技术 408
13.6.1 WinInet使用方法和原则 409
第14章 数据库编程 412
14.1 数据库基础知识 413
14.1.1 数据库基本概念 413
14.1.2 数据库种类 413
14.1.3 数据库开发步骤 414
14.1.4 数据库的发展阶段和优点 414
14.1.5 数据库接口技术 415
14.2 Access数据库 416
14.2.1 基础知识 416
14.2.2 数据库设计 417
14.3 SQL语句 428
14.3.1 SQL基础知识 428
14.3.2 SQL基本语法 428
14.3.3 查询语句 429
14.3.4 插入语句 430
14.3.5 更新语句 431
14.3.6 删除语句 431
14.4 ODBC编程 435
14.4.1 基础知识 435
14.4.2 CDatabase类 436
14.4.3 CRecordset类 438
14.4.4 CRecordView类 444
14.5 DAO编程 461
14.5.1 DAO基础知识 461
14.5.2 DAO内部结构 463
14.5.3 应用DAO编程 464
14.6 OLE DB 478
14.6.1 基本OLE/DB结构 478
14.6.2 OLE/DB客户模板结构 479
14.6.3 OLE/DB提供者模板结构 480
14.7 ADO对象和集合 483
14.7.1 ADO对象模型 483
14.7.2 引入ADO库 484
14.7.3 连接数据库 484
14.7.4 查询记录 485
14.7.5 添加记录 486
14.7.6 修改记录 486
14.7.7 删除记录 487
14.7.8 在C++应用程序中使用ADO 488
实战演练
另：光盘中附赠5个系统程序
1 考试管理系统
2 网络流量监控系统
3 库存管理系统
4 MySniff嗅探器
5 HTTP服务器
实例目录
第1章 Visual C++ 6.0配置 1
第2章 C++语言基础 19
实例2-1 自增自减 24
实例2-2 求余运算符 24
实例2-3 赋值运算符 26
实例2-4 指针类型 28
实例2-5 应用if…else 30
实例2-6 switch语句 32
实例2-7 for循环 33
实例2-8 while循环 34
实例2-9 do…while循环 35
实例2-10 循环次数 36
实例2-11 转移语句 37
实例2-12 函数调用 39
实例2-13 函数递归 41
实例2-14 函数重载 42
实例2-15 局部变量 43
实例2-16 全局变量 44
实例2-17 静态变量 45
实例2-18 求和运算 47
实例2-19 静态成员 48
实例2-20 内联函数 49
实例2-21 友元函数 50
实例2-22 构造函数 52
实例2-23 析构函数 53
实例2-24 单继承 54
实例2-25 多继承 56
实例2-26 虚函数 58
实例2-27 宏定义 60
第3章 Windows编程模式 63
第4章 应用程序框架 78
实例4-1 利用MFC AppWizard生成一个SDI（单文档） 79
实例4-2 输出圆 88
实例4-3 利用类向导创建类 91
第5章 资源和资源编辑器 98
实例5-1 创建自定义资源 101
实例5-2 登录界面 104
实例5-3 创建一个简单的菜单 106
实例5-4 设计加速键 108
实例5-5 创建一个图标 110
第6章 菜单、工具栏和状态栏 113
实例6-1 普通菜单 117
实例6-2 修改菜单 120
实例6-3 弹出菜单 123
实例6-4 动态添加菜单 125
实例6-5 动态插入菜单项 126
实例6-6 动态删除菜单项 127
实例6-7 为动态创建的菜单项添加响应函数 128
实例6-8 创建工具栏1 131
实例6-9 创建工具栏2 133
实例6-10 修改应用程序的状态栏 139
实例6-11 更新状态栏窗格 140
实例6-12 状态栏时钟 143
实例6-13 鼠标位置 145
实例6-14 画正弦曲线 148
第7章 对话框 160
实例7-1 创建对话框资源 163
实例7-2 创建对话框类 166
实例7-3 模态对话框 173
实例7-4 非模态对话框 174
实例7-5 创建向导对话框 185
第8章 Windows通用控件 195
实例8-1 静态文本控件 198
实例8-2 简单乘法运算 203
实例8-3 标准控件实例 217
第9章 文本与图形处理 237
实例9-1 绘制直线 241
实例9-2 矩形和椭圆 242
实例9-3 画笔 248
实例9-4 原色画刷 251
实例9-5 含样式的画刷 252
实例9-6 字体类 254
实例9-7 空心字 256
实例9-8 渐变字 258
实例9-9 位图类 260
实例9-10 坐标系统 262
第10章 文件操作 265
实例10-1 Serialize()函数 268
实例10-2 CArchive应用 272
实例10-3 存取SDI程序文档实例 278
实例10-4 文件操作实例 284
第11章 多线程 296
实例11-1 进程应用 302
实例11-2 线程实例 308
实例11-3 用户界面线程 310
实例11-4 使用工作者线程实例 314
实例11-5 线程间的通信 319
实例11-6 线程同步 329
实例11-7 多线程实例 335
第12章 Windows动态链接库 337
实例12-1 应用非MFC DLL 348
实例12-2 常规DLL 351
实例12-3 扩展DLL 356
实例12-4 鼠标钩子 365
第13章 网络编程 370
实例13-1 Winsock实现点对点聊天程序（UDP） 386
实例13-2 Winsock实现聊天程序（TCP） 392
实例13-3 CSocket实现聊天程序（TCP） 404
第14章 数据库编程 412
实例14-1 表向导 420
实例14-2 使用设计器创建表 422
实例14-3 Access数据库 424
实例14-4 SQL Server 432
实例14-5 创建数据源 445
实例14-6 ODBC程序 446
实例14-7 DAO应用编程 465
实例14-8 开发MFC OLE DB用户程序 482
实例14-9 开发ATL OLE DB用户程序 483
实例14-10 通过OLE DB SDK使用ADO 488