第一部分 开发技术 2
第0章 如何学好Visual C++ 2
第1章 走进Visual C++ 3
1.1 Visual C++ 6.0概述 3
1.1.1 Visual C++简介 3
1.1.2 Visual C++发展历程 4
1.1.3 Visual C++新特点 4
1.2 初识Visual C++开发环境 4
1.2.1 Visual C++开发环境概述 4
1.2.2 Visual C++菜单介绍 6
1.2.3 Visual C++工具栏 15
1.2.4 Visual C++控件面板 17
1.2.5 新建(New)窗口 18
1.2.6 工作区(Workspace)窗口 21
1.2.7 代码编辑器(Code Editor) 23
1.2.8 代码浏览器(Source Browser) 24
1.3 定制自己的开发环境 25
1.3.1 Editor选项卡 25
1.3.2 Tabs选项卡 26
1.3.3 Debug选项卡 26
1.3.4 Compatibility选项卡 27
1.3.5 Build选项卡 28
1.3.6 Directories选项卡 29
1.3.7 Source Control选项卡 29
1.3.8 Workspace选项卡 30
1.3.9 Macros选项卡 30
1.3.10 Data View选项卡 31
1.3.11 Help System选项卡 31
1.3.12 Format选项卡 32
1.4 MSDN Library的使用 32
1.5 创建第一个Visual C++控制台程序 33
1.5.1 使用向导创建一个Hello World程序 33
1.5.2 手动创建一个Hello World程序 35
1.6 创建第一个Visual C++对话框程序 37
1.6.1 制作一个简单的MFC应用程序 37
1.6.2 工程文件列表 42
1.7 术语 43
1.8 小结 44
第2章 Visual C++语言基础 45
2.1 程序编码规范 45
2.1.1 注释 45
2.1.2 命名 45
2.1.3 空白 46
2.1.4 缩进 46
2.2 编程语言基本要素 46
2.2.1 关键字 46
2.2.2 标识符 47
2.2.3 常量 47
2.2.4 变量 48
2.2.5 宏定义 49
2.3 基本数据类型 49
2.3.1 简单类型 50
2.3.2 字符串类型 50
2.3.3 数组类型 52
2.3.4 枚举类型 52
2.3.5 结构体类型 53
2.3.6 共用体类型 55
2.3.7 文件类型 57
2.3.8 指针类型 61
2.3.9 引用类型 62
2.4 MFC常见数据类型 64
2.5 类型转换 65
2.6 运算符和表达式 66
2.6.1 运算符 66
2.6.2 表达式 70
2.7 优先级介绍 71
2.8 术语 72
2.9 小结 72
2.10 练习 73
第3章 顺序结构程序设计 74
3.1 语句概述 74
3.1.1 语句的构成 74
3.1.2 复合语句 75
3.2 顺序语句实例 76
3.3 术语 77
3.4 小结 77
3.5 练习 77
第4章 选择结构程序设计 78
4.1 if选择语句 78
4.2 switch多分支选择语句 81
4.3 术语 84
4.4 小结 84
4.5 练习 84
第5章 循环结构程序设计 85
5.1 while语句 85
5.2 do…while语句 86
5.3 for语句 87
5.4 break和continue语句 89
5.4.1 break语句 89
5.4.2 continue语句 90
5.5 goto语句 91
5.6 术语 91
5.7 小结 92
5.8 练习 92
第6章 数组 93
6.1 数组的概念 93
6.1.1 数组的分类 93
6.1.2 数组的维数 94
6.2 一维数组 94
6.2.1 一维数组的声明 94
6.2.2 一维数组元素的引用 94
6.2.3 一维数组的基本操作 95
6.3 二维数组及多维数组 96
6.3.1 二维数组的声明 96
6.3.2 二维数组的引用 97
6.3.3 二维数组的基本操作 97
6.3.4 多维数组的声明和引用 99
6.4 字符数组 100
6.4.1 字符数组的定义 100
6.4.2 字符数组的引用 100
6.4.3 字符数组的初始化 101
6.4.4 字符数组的结束标志 102
6.4.5 字符数组的输出 103
6.4.6 字符数组的输入 104
6.5 术语 105
6.6 小结 105
6.7 练习 105
第7章 函数 106
7.1 函数的定义 106
7.1.1 函数的声明 106
7.1.2 函数的定义 107
7.1.3 函数的调用 107
7.2 函数的参数 108
7.2.1 用数组名作为函数参数 108
7.2.2 默认值参数 109
7.2.3 形参表可变的函数 109
7.3 参数传递方式 111
7.3.1 值传递 111
7.3.2 引用传递 112
7.4 函数的递归调用 113
7.5 内联函数 114
7.6 重载函数的应用 115
7.7 函数模板的应用 116
7.8 变量的作用域与生存期 117
7.9 定义和使用命名空间 119
7.10 术语 123
7.11 小结 124
7.12 练习 124
第8章 解析指针和引用 125
8.1 指针概述 125
8.2 定义指针类型 126
8.2.1 变量与指针 126
8.2.2 使用指针变量 126
8.2.3 “&”和“*”运算符 128
8.2.4 指针的算术运算 128
8.3 指针在数组中的应用 130
8.3.1 指向数组元素的指针 130
8.3.2 使用指针访问数组 131
8.4 引用类型解析 134
8.5 动态内存分配 136
8.6 术语 137
8.7 小结 137
8.8 练习 137
第9章 面向对象程序设计 138
9.1 面向对象的设计思想 138
9.1.1 对象和类 138
9.1.2 面向对象的主要特征 140
9.2 类的定义 141
9.3 对象的使用 143
9.3.1 对象的声明与实例化 143
9.3.2 类与对象的关系 144
9.3.3 类成员的访问 144
9.3.4 类成员的保护 144
9.4 构造函数与析构函数 146
9.4.1 什么是构造函数 146
9.4.2 默认构造函数 148
9.4.3 复制构造函数 149
9.4.4 重载构造函数 150
9.4.5 析构函数 152
9.5 特殊的类成员 154
9.5.1 常量成员 154
9.5.2 静态成员 154
9.5.3 隐藏的this指针 156
9.6 特殊的类成员函数 157
9.6.1 常量成员函数 157
9.6.2 内联成员函数 159
9.6.3 静态成员函数 159
9.6.4 运算符重载 163
9.7 类的继承 165
9.7.1 单一继承 165
9.7.2 多重继承 166
9.7.3 覆盖成员函数 168
9.7.4 虚函数 169
9.7.5 纯虚函数 172
9.8 友元类和友元方法 175
9.9 类模板的使用 179
9.9.1 类模板的声明和实例化 179
9.9.2 类模板的实现 179
9.10 术语 181
9.11 小结 182
9.12 练习 182
第10章 程序调试及异常处理 183
10.1 进行断点跟踪 183
10.1.1 设置普通断点 183
10.1.2 设置条件断点 184
10.1.3 设置数据断点 185
10.1.4 设置消息断点 186
10.1.5 进行断点跟踪 187
10.2 观察调试窗口 188
10.2.1 使用Watch窗口查看变量值 188
10.2.2 使用Call Stack窗口查看函数的调用 189
10.2.3 使用Memory窗口查看对象的内存信息 190
10.2.4 使用Variables窗口查看变量信息 191
10.2.5 使用Registers窗口查看寄存器信息 191
10.2.6 使用Disassembly窗口查看反汇编代码 192
10.3 宏调试的使用 193
10.3.1 应用TRACE宏输出信息 193
10.3.2 应用ASSERT宏诊断条件是否成立 194
10.4 检查内存泄露问题 194
10.5 异常处理 195
10.5.1 异常捕捉 195
10.5.2 抛出异常 196
10.6 术语 199
10.7 小结 199
10.8 练习 199
第11章 对话框程序设计 200
11.1 创建对话框应用程序 200
11.1.1 创建对话框 202
11.1.2 设计对话框资源 202
11.1.3 创建并显示对话框 207
11.2 设置对话框属性 213
11.2.1 使用属性窗口设置对话框属性 213
11.2.2 使用代码设置对话框属性 218
11.3 对话框常用方法 219
11.4 向对话框中添加成员和成员函数 227
11.4.1 添加成员和成员函数 228
11.4.2 添加消息处理函数 231
11.4.3 手动添加命令消息处理函数 234
11.5 使用消息对话框 234
11.6 通用对话框 235
11.6.1 “文件”对话框 236
11.6.2 “查找/替换”对话框 238
11.6.3 “字体”对话框 241
11.6.4 “颜色”对话框 243
11.6.5 “打印”对话框 245
11.6.6 “页面设置”对话框 247
11.7 术语 248
11.8 小结 248
11.9 练习 249
第12章 文档与视图 250
12.1 构建文档/视图应用程序 250
12.1.1 文档/视图结构概述 250
12.1.2 创建文档/视图结构应用程序 251
12.2 文档/视图结构的创建 252
12.2.1 文档模板的创建 252
12.2.2 文档的创建 254
12.2.3 框架与视图的创建 257
12.3 文档模板概述 260
12.3.1 文档管理器 260
12.3.2 文档模板 263
12.4 文档对象 264
12.4.1 文档对象的主要方法 264
12.4.2 文档的初始化 266
12.4.3 保存文档 267
12.4.4 文档的命令处理 267
12.4.5 文档的销毁 269
12.5 视图对象 271
12.5.1 视图对象的主要方法 271
12.5.2 视图的初始化 273
12.5.3 视图的绘制 273
12.5.4 视图的销毁 274
12.6 框架窗口 277
12.6.1 框架对象的主要方法 277
12.6.2 框架的初始化 278
12.6.3 命令消息处理 278
12.7 文档/视图的应用 280
12.7.1 利用文档/视图结构进行打印 280
12.7.2 修改文档/视图结构默认的打印预览 286
12.8 术语 289
12.9 小结 290
12.10 练习 290
第13章 MFC常用控件 291
13.1 控件操作 291
13.1.1 放置和选定控件 291
13.1.2 控件的缩放与移动 292
13.1.3 控件的复制与删除 292
13.1.4 控件的对齐 292
13.2 图像控件设计 294
13.2.1 图像控件的主要属性 294
13.2.2 显示图像 294
13.3 静态控件设计 296
13.4 编辑框控件设计 299
13.5 按钮控件设计 304
13.6 复选框控件设计 308
13.6.1 复选框控件的主要属性 308
13.6.2 设置选中状态 308
13.6.3 获取选中状态 309
13.7 单选按钮控件设计 310
13.7.1 单选按钮控件的主要属性 310
13.7.2 获得单选按钮中的文本 311
13.8 组合框控件设计 312
13.9 列表框控件设计 315
13.10 进度条控件设计 320
13.10.1 进度条控件的主要属性 320
13.10.2 进度条控件的主要方法 321
13.10.3 使用进度条显示操作进度 321
13.11 术语 322
13.12 小结 322
13.13 练习 322
第14章 MFC高级控件 323
14.1 图像列表控件设计 323
14.2 列表视图控件设计 326
14.2.1 列表视图控件的主要属性 327
14.2.2 列表视图控件的主要方法 327
14.2.3 设置列表视图背景位图 330
14.2.4 使用列表视图显示表格数据 332
14.3 树视图控件设计 333
14.3.1 树视图控件的主要属性 333
14.3.2 树视图控件的主要方法 334
14.3.3 使用树视图控件显示区域信息 337
14.4 滑块控件设计 338
14.4.1 滑块控件属性设置 338
14.4.2 使用滑块控件设置颜色 339
14.5 标签控件设计 341
14.5.1 标签控件的主要属性 341
14.5.2 标签控件的主要方法 342
14.5.3 使用标签控件设计多页面窗口 343
14.6 术语 345
14.7 小结 345
14.8 练习 345
第15章 菜单、工具栏和状态栏设计 347
15.1 菜单 347
15.1.1 菜单资源的设计 347
15.1.2 菜单的命令处理 348
15.1.3 菜单的主要方法 349
15.1.4 动态创建菜单 352
15.1.5 具有图标的菜单 354
15.2 工具栏 360
15.2.1 工具栏设计 360
15.2.2 工具栏按钮的命令处理 361
15.2.3 工具栏的主要方法 362
15.2.4 动态创建工具栏 364
15.2.5 具有图像按钮的工具栏 365
15.2.6 具有提示功能的工具栏 367
15.3 状态栏 369
15.3.1 状态栏的主要方法 369
15.3.2 动态创建状态栏 371
15.3.3 在状态栏中显示进度条 371
15.4 术语 373
15.5 小结 373
15.6 练习 373
第16章 图形图像处理技术 374
16.1 图形设备接口 374
16.1.1 画笔 374
16.1.2 画刷 378
16.1.3 位图 380
16.1.4 区域 383
16.1.5 字体 387
16.1.6 设备环境 390
16.1.7 调色板 397
16.2 常用图像存储格式 399
16.2.1 位图 399
16.2.2 图标 401
16.2.3 GIF图像 402
16.3 绘制图形图像 404
16.3.1 绘制时钟 404
16.3.2 绘制按钮 406
16.3.3 绘制立体模型 407
16.3.4 填充区域 408
16.3.5 填充选区 409
16.3.6 利用位图设计不规则窗体 410
16.3.7 显示JPEG和GIF图像 411
16.4 术语 413
16.5 小结 413
16.6 练习 413
第17章 多媒体技术 415
17.1 音频处理技术 415
17.1.1 加载应用程序WAV资源 415
17.1.2 播放WAV文件 416
17.1.3 设计音频播放器 420
17.2 视频处理技术 421
17.2.1 使用控件播放AVI文件 422
17.2.2 使用函数播放AVI文件 422
17.2.3 将位图组合为AVI文件 425
17.2.4 视频文件压缩处理 428
17.3 术语 435
17.4 小结 435
17.5 练习 435
第18章 文件和注册表 436
18.1 普通文件操作 436
18.1.1 应用C函数进行文件操作 436
18.1.2 使用CFile类进行文件操作 439
18.1.3 使用CFileFind类进行文件查找 442
18.2 数据的串行化 446
18.2.1 串行化基础 446
18.2.2 编写串行化类 448
18.3 INI文件操作 449
18.3.1 INI文件基本结构 450
18.3.2 读写INI文件 450
18.4 注册表操作 453
18.4.1 注册表中的函数 453
18.4.2 利用函数直接读写注册表 456
18.4.3 CRegKey类的主要方法 457
18.4.4 利用CRegKey类读写注册表 459
18.5 术语 460
18.6 小结 460
18.7 练习 460
第19章 打印技术 462
19.1 基本概念 462
19.1.1 打印机介绍 462
19.1.2 分辨率 463
19.1.3 设备环境 463
19.1.4 映射模式 466
19.2 基于文档/视图结构的打印 467
19.2.1 按比例打印数据 468
19.2.2 打印图像 470
19.2.3 自定义打印预览 474
19.3 基于对话框结构的打印 476
19.3.1 获取打印机DC 477
19.3.2 打印预览 478
19.3.3 分页打印 480
19.4 设置打印属性 481
19.4.1 自定义打印纸的大小 481
19.4.2 控制打印方向 482
19.4.3 设置打印份数 482
19.5 术语 483
19.6 小结 483
19.7 练习 483
第20章 ADO数据库操作技术 485
20.1 ADO概述 485
20.2 ADO对象 485
20.2.1 连接对象 486
20.2.2 命令对象 487
20.2.3 记录集对象 487
20.2.4 参数对象 489
20.3 利用ADO连接数据库 490
20.3.1 连接Access数据库 490
20.3.2 连接SQL Server数据库 493
20.3.3 连接Oracle数据库 494
20.4 利用ADO操作数据库 497
20.4.1 获取记录集数据 497
20.4.2 遍历记录集 499
20.4.3 向记录集中添加数据 501
20.4.4 修改记录集数据 505
20.4.5 删除记录集数据 507
20.5 术语 508
20.6 小结 508
20.7 练习 509
第21章 网络套接字编程 510
21.1 计算机网络基础 510
21.1.1 OSI参考模型 510
21.1.2 TCP/IP协议簇 511
21.1.3 套接字简介 512
21.1.4 客户/服务器模式 512
21.2 WinSock API常用函数 512
21.2.1 accept函数 512
21.2.2 bind函数 513
21.2.3 closesocket函数 513
21.2.4 connect函数 514
21.2.5 htons函数 514
21.2.6 htonl函数 514
21.2.7 inet_addr函数 514
21.2.8 listen函数 514
21.2.9 recv函数 515
21.2.10 select函数 515
21.2.11 send函数 516
21.2.12 socket函数 516
21.2.13 WSAStartup函数 516
21.2.14 WSACleanup函数 517
21.2.15 WSAAsyncSelect函数 517
21.3 MFC套接字编程 525
21.3.1 CAsyncSocket类 526
21.3.2 CSocket类 530
21.4 术语 531
21.5 小结 531
21.6 练习 531
第22章 动态链接库 532
22.1 DLL动态链接库概述 532
22.1.1 动态链接库的特点 532
22.1.2 查看动态链接库 532
22.2 创建和访问动态链接库 534
22.2.1 创建Win32动态链接库 534
22.2.2 命名约定 535
22.2.3 动态链接库的调用 537
22.2.4 创建MFC动态链接库 539
22.3 术语 541
22.4 小结 542
22.5 练习 542
第二部分 项目实战 544
第23章 企业内部QQ 544
23.1 项目设计思路 544
23.1.1 系统概述 544
23.1.2 功能结构 544
23.1.3 系统预览 545
23.2 关键技术 546
23.2.1 设计支持QQ表情的ATL控件 546
23.2.2 向CRichEditCtrl控件中插入ATL控件 555
23.2.3 使用XML文件实现组织结构的客户端显示 557
23.2.4 在树控件中利用节点数据标识节点的类型 559
23.2.5 定义数据报结构实现文本、图像、文件数据的发送与显示 560
23.2.6 数据报粘报的简单处理 561
23.2.7 实现客户端掉线的自动登录 562
23.3 服务器主窗口设计 563
23.3.1 服务器主窗口概述 563
23.3.2 界面布局 563
23.3.3 实现过程 564
23.4 部门和账户模块设计 567
23.4.1 部门信息设置窗口概述 567
23.4.2 界面布局 568
23.4.3 实现过程 568
23.4.4 账户设置模块设计 571
23.5 客户端主窗口设计 572
23.5.1 客户端主窗口概述 572
23.5.2 界面布局 572
23.5.3 实现过程 573
23.6 登录窗口模块设计 579
23.6.1 登录窗口概述 579
23.6.2 界面布局 579
23.6.3 实现过程 579
23.7 信息发送窗口模块设计 583
23.7.1 信息发送窗口概述 583
23.7.2 界面布局 584
23.7.3 实现过程 584
23.8 项目发布 588
23.9 小结 588
第24章 文档管理系统 589
24.1 项目设计思路 589
24.1.1 项目规划 589
24.1.2 系统功能图 589
24.2 数据库设计 589
24.2.1 数据库概要说明 589
24.2.2 主要数据表结构 590
24.3 封装数据库 591
24.3.1 添加ADO连接类 591
24.3.2 添加数据库表的类 593
24.4 主窗口设计 599
24.4.1 主窗口菜单设置 599
24.4.2 客户区设计 600
24.5 用户登录模块设计 604
24.5.1 实现目标 604
24.5.2 设计步骤 604
24.5.3 代码分析 605
24.6 单位档案模块设计 606
24.6.1 实现目标 606
24.6.2 设计步骤 606
24.6.3 代码分析 607
24.7 文档类别模块设计 611
24.7.1 实现目标 611
24.7.2 设计步骤 612
24.7.3 代码分析 612
24.8 文档管理模块设计 614
24.8.1 实现目标 614
24.8.2 设计步骤 614
24.8.3 代码分析 615
24.9 用户管理模块设计 621
24.9.1 实现目标 621
24.9.2 设计步骤 622
24.9.3 代码分析 622
24.10 口令修改模块设计 624
24.10.1 实现目标 624
24.10.2 设计步骤 624
24.10.3 代码分析 625
24.11 小结 626
第25章 时尚E-mail 627
25.1 项目设计思路 627
25.1.1 功能阐述 627
25.1.2 功能结构 627
25.1.3 系统预览 627
25.2 邮件服务配置 629
25.2.1 SMTP和POP3简介 629
25.2.2 安装和配置邮件服务器 630
25.2.3 安装和配置POP3服务器 632
25.3 主窗体设计 633
25.3.1 主窗体概述 633
25.3.2 界面布局 633
25.3.3 功能实现 634
25.4 写邮件设计 638
25.4.1 写邮件模块概述 638
25.4.2 界面布局 638
25.4.3 功能实现 639
25.5 草稿箱设计 645
25.5.1 草稿箱模块概述 645
25.5.2 界面布局 645
25.5.3 功能实现 646
25.6 收件箱设计 650
25.6.1 收件箱模块概述 650
25.6.2 界面布局 651
25.6.3 功能实现 651
25.7 读邮件设计 658
25.7.1 读邮件概述 658
25.7.2 界面布局 659
25.7.3 功能实现 659
25.8 通讯录设计 660
25.8.1 通讯录概述 660
25.8.2 界面布局 660
25.8.3 功能实现 662
25.9 项目发布 665
25.10 小结 665
第26章 进销存管理系统 666
26.1 项目设计思路 666
26.1.1 功能阐述 666
26.1.2 功能结构 666
26.1.3 系统预览 666
26.2 数据库设计 669
26.2.1 数据库概要说明 669
26.2.2 主要数据表结构 670
26.3 主窗口设计 673
26.3.1 菜单栏设计 674
26.3.2 工具栏设计 675
26.3.3 为菜单和工具栏添加消息处理函数 678
26.3.4 状态栏设计 679
26.3.5 客户区设计 681
26.4 系统登录管理模块设计 681
26.4.1 实现目标 681
26.4.2 设计步骤 682
26.4.3 程序相关代码 682
26.5 商品销售管理模块设计 685
26.5.1 实现目标 685
26.5.2 设计步骤 685
26.5.3 程序相关代码 686
26.6 权限设置管理模块设计 695
26.6.1 实现目标 695
26.6.2 设计步骤 695
26.6.3 程序相关代码 696
26.7 小结 697
附录A 常用网络资源 698
附录B C库函数大全 699