第1篇 起步篇
第1章 Visual C++ 6.0开发环境 3
1.1 Visual C++ 6.0概述 4
1.2 Visual C++ 6.0开发环境 4
1.2.1 Visual C++ 6.0开发环境布局 4
1.2.2 Visual C++ 6.0菜单介绍 5
1.2.3 Visual C++ 6.0工具栏介绍 15
1.2.4 Visual C++ 6.0控件面板介绍 17
1.2.5 工作区窗口介绍 18
1.2.6 代码编辑器介绍 20
1.2.7 输出窗口介绍 21
1.3 定制个性化开发环境 22
1.3.1 利用Customize窗口设置开发环境 22
1.3.2 利用Options窗口设置开发环境 27
1.4 本章小结 34
第2章 C++语言基础 35
2.1 构建开发环境 36
2.1.1 创建简单的工程 36
2.1.2 工程文件分析 37
2.1.3 编译、连接和运行工程 37
2.2 代码编写规范 38
2.2.1 在程序中规范使用注释 38
2.2.2 按照命名规范书写代码 38
2.2.3 统一代码缩进格式 39
2.3 C++基本要素 39
2.3.1 深入理解标识符 39
2.3.2 C++中常用关键字介绍 39
2.3.3 定义和使用常量 40
2.3.4 深入理解变量 41
2.4 数据类型 42
2.4.1 C++简单数据类型介绍 42
2.4.2 字符串类型 42
2.4.3 数组类型 45
2.4.4 枚举类型 47
2.4.5 结构体类型 48
2.4.6 C++指针类型 49
2.4.7 使用引用类型为变量设置别名 50
2.5 数据类型转换 51
2.6 运算符 52
2.6.1 使用赋值运算符为变量赋值 52
2.6.2 使用算术运算符设计简单计算器 52
2.6.3 使用关系运算符进行条件判断 53
2.6.4 使用逻辑运算符描述复杂逻辑关系 54
2.6.5 理解逗号运算符 55
2.6.6 应用条件运算符简化代码 55
2.7 表达式 56
2.8 结合性与优先级 56
2.9 本章小结 57
第3章 算法与语句 58
3.1 算法 59
3.1.1 什么是算法 59
3.1.2 算法的描述方法 59
3.1.3 3种程序的控制结构 60
3.1.4 算法应用举例 61
3.2 语句 62
3.3 顺序语句 62
3.4 分支语句 63
3.4.1 if判断语句 63
3.4.2 switch语句 67
3.5 循环语句 70
3.5.1 使用跳转语句goto实现循环 70
3.5.2 使用while语句根据关系表达式实现循环 70
3.5.3 使用for语句根据循环次数实现循环 72
3.6 其他控制语句 73
3.6.1 强制结束break 73
3.6.2 继续语句continue 73
3.6.3 退出语句Exit 74
3.7 异常处理语句 75
3.8 本章小结 78
第4章 面向过程与面向对象编程 79
4.1 函数 80
4.1.1 函数的声明和定义 80
4.1.2 为函数设置参数 81
4.1.3 为函数参数设置默认值 81
4.1.4 为函数设置动态参数 82
4.1.5 定义内联函数 82
4.1.6 定义和使用重载函数 83
4.1.7 应用函数模板定义通用函数 84
4.1.8 应用函数指针调用不同的函数 84
4.1.9 函数的递归调用 85
4.2 类和对象 86
4.2.1 深入理解类的概念 86
4.2.2 类的声明 86
4.2.3 对象的声明和实例化 86
4.2.4 类成员的访问 86
4.2.5 类成员的保护 87
4.2.6 构造函数的定义及调用 87
4.2.7 析构函数的定义及调用过程分析 89
4.2.8 类的继承 91
4.2.9 为类定义内联方法 97
4.2.10 定义静态成员数据和静态方法 97
4.2.11 定义友元类和友元函数 99
4.2.12 重载运算符 101
4.3 异常处理 102
4.3.1 异常捕捉 103
4.3.2 抛出异常 104
4.4 本章小结 104
第1篇 起步篇
第1章 Visual C++ 6.0开发环境 3
1.1 Visual C++ 6.0概述 4
1.2 Visual C++ 6.0开发环境 4
1.2.1 Visual C++ 6.0开发环境布局 4
1.2.2 Visual C++ 6.0菜单介绍 5
1.2.3 Visual C++ 6.0工具栏介绍 15
1.2.4 Visual C++ 6.0控件面板介绍 17
1.2.5 工作区窗口介绍 18
1.2.6 代码编辑器介绍 20
1.2.7 输出窗口介绍 21
1.3 定制个性化开发环境 22
1.3.1 利用Customize窗口设置开发环境 22
1.3.2 利用Options窗口设置开发环境 27
1.4 本章小结 34
第2章 C++语言基础 35
2.1 构建开发环境 36
2.1.1 创建简单的工程 36
2.1.2 工程文件分析 37
2.1.3 编译、连接和运行工程 37
2.2 代码编写规范 38
2.2.1 在程序中规范使用注释 38
2.2.2 按照命名规范书写代码 38
2.2.3 统一代码缩进格式 39
2.3 C++基本要素 39
2.3.1 深入理解标识符 39
2.3.2 C++中常用关键字介绍 39
2.3.3 定义和使用常量 40
2.3.4 深入理解变量 41
2.4 数据类型 42
2.4.1 C++简单数据类型介绍 42
2.4.2 字符串类型 42
2.4.3 数组类型 45
2.4.4 枚举类型 47
2.4.5 结构体类型 48
2.4.6 C++指针类型 49
2.4.7 使用引用类型为变量设置别名 50
2.5 数据类型转换 51
2.6 运算符 52
2.6.1 使用赋值运算符为变量赋值 52
2.6.2 使用算术运算符设计简单计算器 52
2.6.3 使用关系运算符进行条件判断 53
2.6.4 使用逻辑运算符描述复杂逻辑关系 54
2.6.5 理解逗号运算符 55
2.6.6 应用条件运算符简化代码 55
2.7 表达式 56
2.8 结合性与优先级 56
2.9 本章小结 57
第3章 算法与语句 58
3.1 算法 59
3.1.1 什么是算法 59
3.1.2 算法的描述方法 59
3.1.3 3种程序的控制结构 60
3.1.4 算法应用举例 61
3.2 语句 62
3.3 顺序语句 62
3.4 分支语句 63
3.4.1 if判断语句 63
3.4.2 switch语句 67
3.5 循环语句 70
3.5.1 使用跳转语句goto实现循环 70
3.5.2 使用while语句根据关系表达式实现循环 70
3.5.3 使用for语句根据循环次数实现循环 72
3.6 其他控制语句 73
3.6.1 强制结束break 73
3.6.2 继续语句continue 73
3.6.3 退出语句Exit 74
3.7 异常处理语句 75
3.8 本章小结 78
第4章 面向过程与面向对象编程 79
4.1 函数 80
4.1.1 函数的声明和定义 80
4.1.2 为函数设置参数 81
4.1.3 为函数参数设置默认值 81
4.1.4 为函数设置动态参数 82
4.1.5 定义内联函数 82
4.1.6 定义和使用重载函数 83
4.1.7 应用函数模板定义通用函数 84
4.1.8 应用函数指针调用不同的函数 84
4.1.9 函数的递归调用 85
4.2 类和对象 86
4.2.1 深入理解类的概念 86
4.2.2 类的声明 86
4.2.3 对象的声明和实例化 86
4.2.4 类成员的访问 86
4.2.5 类成员的保护 87
4.2.6 构造函数的定义及调用 87
4.2.7 析构函数的定义及调用过程分析 89
4.2.8 类的继承 91
4.2.9 为类定义内联方法 97
4.2.10 定义静态成员数据和静态方法 97
4.2.11 定义友元类和友元函数 99
4.2.12 重载运算符 101
4.3 异常处理 102
4.3.1 异常捕捉 103
4.3.2 抛出异常 104
4.4 本章小结 104
第2篇 界面设计篇
第5章 对话框应用程序 107
5.1 构建对话框应用程序 108
5.2 对话框的操作 111
5.2.1 创建对话框 111
5.2.2 显示对话框 112
5.2.3 设置对话框属性 114
5.3 对话框中控件的操作 116
5.3.1 添加控件 117
5.3.2 选择控件 117
5.3.3 复制控件 118
5.3.4 删除控件 118
5.3.5 对齐控件 118
5.3.6 添加控件成员变量 120
5.3.7 控件的子类化 121
5.4 添加数据成员和成员函数 123
5.4.1 添加普通的数据成员 123
5.4.2 添加普通的成员函数 124
5.4.3 添加消息处理函数 125
5.5 Windows消息对话框 126
5.6 Windows通用对话框 127
5.6.1 使用文件对话框获取磁盘中的文件 127
5.6.2 使用查找对话框查找编辑框中的文本 128
5.6.3 使用字体对话框获取字体信息 130
5.6.4 使用打印对话框获取打印机设备上下文 131
5.6.5 使用页面设置对话框设计打印纸大小 133
5.7 本章小结 135
第6章 文档/视图应用程序 136
6.1 构建文档/视图应用程序 137
6.2 消息处理 138
6.2.1 消息映射概述 138
6.2.2 消息映射表的构成 139
6.2.3 理解消息映射宏 142
6.3 视图分割 151
6.3.1 划分子窗口 151
6.3.2 任意划分子窗口 154
6.4 视图窗口高级应用 158
6.4.1 隐藏视图创建选择窗口 158
6.4.2 动态创建视图窗口 159
6.4.3 在视图窗口中显示网页 161
6.5 本章小结 164
第7章 控件 165
7.1 静态文本控件(Static Text) 166
7.1.1 静态文本控件概述 166
7.1.2 静态文本控件的主要属性 166
7.1.3 静态文本控件的主要方法、事件 167
7.1.4 静态文本控件在界面中的应用 168
7.2 编辑框控件(Edit Box) 169
7.2.1 编辑框控件概述 169
7.2.2 编辑框控件的主要属性 169
7.2.3 编辑框控件的主要方法、事件 170
7.2.4 使用编辑框控件设计登录对话框 173
7.3 按钮控件(Button) 174
7.3.1 按钮控件概述 174
7.3.2 按钮控件的主要属性 174
7.3.3 按钮控件的主要方法、事件 175
7.3.4 简单计算器程序设计 177
7.4 复选框(Check Box)和单选按钮控件(Radio Button) 178
7.4.1 复选框和单选按钮控件概述 178
7.4.2 复选框和单选按钮控件的主要属性 179
7.4.3 复选框和单选按钮控件的主要方法、事件 179
7.4.4 使用复选框和单选按钮进行问卷调查 179
7.5 组合框控件(Combo Box) 180
7.5.1 组合框控件概述 180
7.5.2 组合框控件的主要属性 181
7.5.3 组合框控件的主要方法、事件 181
7.5.4 将数据表中的数据添加到组合框中 182
7.6 列表视图控件(List Control) 183
7.6.1 列表视图控件概述 183
7.6.2 列表视图控件的主要属性 184
7.6.3 列表视图控件的主要方法、事件 184
7.6.4 将数据表中数据加载到列表视图控件中 187
7.7 树视图控件(Tree Control) 188
7.7.1 树视图控件概述 188
7.7.2 树视图控件的主要属性 188
7.7.3 树视图控件的主要方法、事件 189
7.7.4 利用树视图控件显示树状结构 193
7.8 本章小结 194
第8章 菜单、工具栏和状态栏设计 195
8.1 菜单设计 196
8.1.1 菜单资源设计 196
8.1.2 菜单项的命令处理 202
8.1.3 菜单项的更新机制 203
8.1.4 菜单类介绍 204
8.1.5 使用菜单类创建菜单 211
8.1.6 设计弹出式菜单 212
8.2 工具栏设计 214
8.2.1 工具栏资源设计 214
8.2.2 工具栏的命令处理 215
8.2.3 工具栏类(CToolBar)介绍 216
8.2.4 使用工具栏类创建工具栏 220
8.2.5 工具栏控制类(CToolBarCtrl)介绍 222
8.2.6 使用工具栏控制类创建工具栏 224
8.3 状态栏设计 225
8.3.1 状态栏类(CStatusBar)介绍 226
8.3.2 使用状态栏类创建状态栏 228
8.3.3 状态栏控制类(CStatusBarCtrl)介绍 229
8.3.4 使用状态栏控制类创建状态栏 231
8.4 本章小结 231
第9章 文字与图形处理技术 232
9.1 图形设备接口 233
9.1.1 设备上下文介绍 233
9.1.2 熟悉使用GDI对象 234
9.2 文本输出 244
9.2.1 使用TextOut方法在指定位置输出文本 244
9.2.2 使用ExtTextOut方法在指定区域输出文本 244
9.2.3 使用TabbedTextOut方法根据制表位输出文本 246
9.2.4 使用DrawText方法格式化输出文本 247
9.3 文本属性 248
9.3.1 设置文本字体 248
9.3.2 设置文本对齐方式 250
9.3.3 设置文本颜色 251
9.3.4 设置文本背景颜色 251
9.3.5 设置文本背景模式 252
9.3.6 获取文本长度 252
9.4 图形绘制 253
9.4.1 利用点线绘制多边形 253
9.4.2 如何快速地绘制图形 254
9.4.3 如何填充指定的区域 257
9.4.4 绘制不规则图形 258
9.5 图像显示 258
9.5.1 设备相关和设备无关位图 258
9.5.2 在视图中绘制位图 259
9.5.3 在界面中实现位图变换 260
9.6 本章小结 261
第3篇 提高篇
第10章 打印技术 265
10.1 打印概述 266
10.1.1 文档视图的打印流程 266
10.1.2 CPrintinfo结构 270
10.1.3 动态计算页码 271
10.2 映射模式与坐标系统 273
10.2.1 固定比率与可变比率映射模式 273
10.2.2 MM_TEXT映射模式 274
10.2.3 设置逻辑与设备坐标 274
10.3 打印控制 275
10.3.1 获取打印纸的左边距和上边距 275
10.3.2 控制打印方向 275
10.3.3 设置打印纸大小 277
10.3.4 设置打印份数 278
10.4 打印实例 280
10.4.1 设计报表打印程序 280
10.4.2 设计单据打印报表 282
10.4.3 设计工作证打印程序 284
10.5 本章小结 285
第11章 多媒体技术 286
11.1 图像处理技术 287
11.1.1 位图文件结构分析 287
11.1.2 将位图文件绘制成对话框背景 288
11.1.3 将设备上下文转换为位图 290
11.1.4 在程序中显示JPEG与GIF文件 291
11.2 音频处理技术 293
11.2.1 播放应用程序中的WAVE资源 293
11.2.2 播放WAVE文件 293
11.2.3 音量大小控制 295
11.3 视频处理技术 298
11.3.1 播放Avi文件 298
11.3.2 播放Flash动画 300
11.4 本章小结 302
第12章 ODBC数据库编程 303
12.1 ODBC概述 304
12.2 设置ODBC数据源 304
12.3 MFC ODBC类 306
12.3.1 CDatabase类介绍 306
12.3.2 CRecordset类介绍 307
12.3.3 CFieldExchange类介绍 309
12.3.4 CRecordView类介绍 309
12.3.5 CDBException类介绍 309
12.4 MFC ODBC数据库操作技术 309
12.4.1 连接数据源 309
12.4.2 向数据表中添加记录 310
12.4.3 修改现有记录 314
12.4.4 删除指定的记录 316
12.4.5 根据条件查询记录 317
12.4.6 使用SQL语句操作数据库 318
12.5 本章小结 320
第13章 ADO数据库编程 321
13.1 ADO概述 322
13.2 ADO对象 322
13.2.1 连接对象Connection 322
13.2.2 命令对象Command 323
13.2.3 记录集对象Recordset 324
13.3 ADO数据库操作技术 326
13.3.1 导入ADO动态链接库 326
13.3.2 使用ADO智能指针 327
13.3.3 初始化COM环境 327
13.3.4 连接数据库 327
13.3.5 打开记录集 330
13.3.6 遍历记录集 331
13.3.7 向记录集中添加数据 333
13.3.8 修改现有记录 336
13.3.9 删除记录集中指定记录 336
13.3.10 使用SQL语句操作数据库 338
13.4 本章小结 339
第14章 文件操作 340
14.1 C库和运行库文件操作 341
14.1.1 C库和运行库函数文件操作函数介绍 341
14.1.2 创建并写入文件 345
14.1.3 获取文件位置指针与文件长度 346
14.2 CFile类文件操作 348
14.2.1 CFile类介绍 348
14.2.2 获取文件属性 351
14.2.3 十六进制显示文本文件 353
14.2.4 使用CFile实现文件的复制 354
14.2.5 CFile类与CStdioFile类的比较 356
14.3 MFC串行化 357
14.3.1 CArchive类介绍 357
14.3.2 Serialize分析 359
14.3.3 创建串行化类 359
14.3.4 实现对象的串行化 360
14.4 文件查找类 361
14.4.1 文件查找类介绍 361
14.4.2 查找指定文件 363
14.4.3 显示磁盘目录 365
14.5 本章小结 367
第15章 注册表与INI文件 368
15.1 注册表 369
15.1.1 注册表简介 369
15.1.2 注册表结构分析 369
15.2 注册表函数 370
15.2.1 CRegKey类 370
15.2.2 注册表数据的写入 373
15.2.3 注册表的相关查询 377
15.2.4 注册表数据的枚举 379
15.3 INI文件 383
15.3.1 INI文件简介 383
15.3.2 INI文件结构分析 384
15.4 INI文件操作函数 384
15.4.1 操作INI文件函数介绍 384
15.4.2 INI文件中键名数据的读写 387
15.4.3 读写结构数据 389
15.4.4 节名与键名的枚举 391
15.5 本章小结 392
第16章 动态链接库 393
16.1 链接库概述 394
16.1.1 链接库的构成 394
16.1.2 动态链接库和静态链接库 394
16.2 链接库的创建与使用 395
16.2.1 通过向导创建静态链接库 395
16.2.2 使用静态链接库 396
16.2.3 创建Win32动态链接库 397
16.2.4 MFC的3种动态链接库 398
16.3 链接库的导出 401
16.3.1 动态链接库的命名改编 401
16.3.2 使用dumpbin工具查看链接库 401
16.3.3 使用DEF文件导出函数名称 402
16.3.4 隐式调用与动态加载 403
16.3.5 从动态链接库中导出类 404
16.4 动态链接库高级应用 407
16.4.1 模块状态 407
16.4.2 资源动态链接库 409
16.4.3 钩子介绍 413
16.4.4 使用钩子动态链接库监控键盘 415
16.5 本章小结 418
第17章 进程与线程 419
17.1 进程 420
17.1.1 理解进程的概念 420
17.1.2 进程的创建 420
17.2 进程的应用 422
17.2.1 启动外部程序 422
17.2.2 进程间消息通信 424
17.2.3 进程间内存共享 426
17.3 线程 428
17.3.1 深入理解线程 428
17.3.2 线程的创建与终止 428
17.3.3 用户界面线程 430
17.4 线程同步 432
17.4.1 线程同步的重要性 432
17.4.2 互斥实现线程同步 433
17.4.3 临界区实现线程同步 435
17.4.4 事件实现线程同步 437
17.5 本章小结 438
第18章 网络编程 439
18.1 网络基础知识 440
18.1.1 计算机网络的定义、功能及分类 440
18.1.2 OSI参考模型 440
18.1.3 TCP/ IP协议簇分析 441
18.2 局域网技术 442
18.2.1 获取网卡地址 442
18.2.2 映射网络驱动器 443
18.2.3 获取局域网计算机名称和IP 444
18.2.4 获得网上共享资源 447
18.2.5 在局域网中发送短消息 449
18.3 Windows套接字技术 450
18.3.1 套接字概述 450
18.3.2 WinSock API相关函数 450
18.3.3 使用套接字函数设计网络聊天室 454
18.4 WinSock类 458
18.4.1 CAsyncSocket类介绍 458
18.4.2 CSocket类介绍 462
18.4.3 使用WinSock类设计网络聊天室 463
18.5 本章小结 466
第19章 程序调试 467
19.1 断点跟踪 468
19.1.1 设置普通断点 468
19.1.2 设置条件断点 469
19.1.3 设置数据断点 471
19.1.4 设置消息断点 472
19.1.5 进行断点跟踪 474
19.2 调试窗口 476
19.2.1 使用Watch窗口查看变量值 476
19.2.2 使用Call Stack窗口查看函数的调用 478
19.2.3 使用Memory窗口查看对象的内存信息 478
19.2.4 使用Variables窗口查看变量信息 480
19.2.5 使用Registers窗口查看寄存器信息 480
19.2.6 使用Disassembly窗口查看反汇编代码 481
19.3 内存泄露检测 483
19.4 本章小结 483