第1章 Visual C++ 6.0开发环境 001
1.1 Visual C++ 6.0概述 002
1.2 Visual C++ 6.0开发环境 002
1.2.1 Visual C++ 6.0开发环境布局 002
1.2.2 Visual C++ 6.0菜单介绍 003
1.2.3 Visual C++ 6.0工具栏介绍 013
1.2.4 Visual C++ 6.0控件面板介绍 015
1.2.5 工作区窗口介绍 016
1.2.6 代码编辑器介绍 018
1.2.7 输出窗口介绍 019
1.3 定制个性化开发环境 019
1.3.1 利用“Customize”窗口设置开发环境 020
1.3.2 利用“Options”窗口设置开发环境 025
1.3.3 扩展IDE集成开发环境 032
1.4 代码编辑器使用技巧 037
1.4.1 在代码编辑器中实现录制功能 037
1.4.2 检测代码中的括号是否匹配 038
1.4.3 对齐零乱的代码 038
1.4.4 显示函数参数 038
1.4.5 完全取词功能不可用 038
1.4.6 自定义关键字 038
1.5 本章小结 038
第2章 C++语言基础 039
2.1 构建开发环境 040
2.1.1 创建简单的工程 040
2.1.2 工程文件分析 041
2.1.3 编译、连接和运行工程 041
2.2 代码编写规范 042
2.2.1 在程序中规范使用注释 042
2.2.2 按照命名规范书写代码 042
2.2.3 统一代码缩进格式 043
2.3 C++基本要素 043
2.3.1 深入理解标识符 043
2.3.2 C++ 中常用关键字介绍 043
2.3.3 定义和使用常量 044
2.3.4 深入理解变量 045
2.4 数据类型 046
2.4.1 C++简单数据类型介绍 046
2.4.2 布尔类型 046
2.4.3 字符串类型 047
2.4.4 数组类型 049
2.4.5 枚举类型 052
2.4.6 结构体类型 053
2.4.7 C++指针类型 054
2.4.8 使用引用类型为变量设置别名 055
2.4.9 定义类型别名 056
2.5 数据类型转换 056
2.6 运算符 056
2.6.1 使用赋值运算符为变量赋值 057
2.6.2 使用算术运算符设计简单计算器 058
2.6.3 使用关系运算符进行条件判断 059
2.6.4 使用逻辑运算符描述复杂逻辑关系 060
2.6.5 理解逗号运算符 061
2.6.6 应用条件运算符简化代码 061
2.6.7 sizeof运算符 061
2.6.8 new和delete运算符 062
2.7 表达式 062
2.8 结合性与优先级 063
2.9 本章小结 064
第1章 Visual C++ 6.0开发环境 001
1.1 Visual C++ 6.0概述 002
1.2 Visual C++ 6.0开发环境 002
1.2.1 Visual C++ 6.0开发环境布局 002
1.2.2 Visual C++ 6.0菜单介绍 003
1.2.3 Visual C++ 6.0工具栏介绍 013
1.2.4 Visual C++ 6.0控件面板介绍 015
1.2.5 工作区窗口介绍 016
1.2.6 代码编辑器介绍 018
1.2.7 输出窗口介绍 019
1.3 定制个性化开发环境 019
1.3.1 利用“Customize”窗口设置开发环境 020
1.3.2 利用“Options”窗口设置开发环境 025
1.3.3 扩展IDE集成开发环境 032
1.4 代码编辑器使用技巧 037
1.4.1 在代码编辑器中实现录制功能 037
1.4.2 检测代码中的括号是否匹配 038
1.4.3 对齐零乱的代码 038
1.4.4 显示函数参数 038
1.4.5 完全取词功能不可用 038
1.4.6 自定义关键字 038
1.5 本章小结 038
第2章 C++语言基础 039
2.1 构建开发环境 040
2.1.1 创建简单的工程 040
2.1.2 工程文件分析 041
2.1.3 编译、连接和运行工程 041
2.2 代码编写规范 042
2.2.1 在程序中规范使用注释 042
2.2.2 按照命名规范书写代码 042
2.2.3 统一代码缩进格式 043
2.3 C++基本要素 043
2.3.1 深入理解标识符 043
2.3.2 C++ 中常用关键字介绍 043
2.3.3 定义和使用常量 044
2.3.4 深入理解变量 045
2.4 数据类型 046
2.4.1 C++简单数据类型介绍 046
2.4.2 布尔类型 046
2.4.3 字符串类型 047
2.4.4 数组类型 049
2.4.5 枚举类型 052
2.4.6 结构体类型 053
2.4.7 C++指针类型 054
2.4.8 使用引用类型为变量设置别名 055
2.4.9 定义类型别名 056
2.5 数据类型转换 056
2.6 运算符 056
2.6.1 使用赋值运算符为变量赋值 057
2.6.2 使用算术运算符设计简单计算器 058
2.6.3 使用关系运算符进行条件判断 059
2.6.4 使用逻辑运算符描述复杂逻辑关系 060
2.6.5 理解逗号运算符 061
2.6.6 应用条件运算符简化代码 061
2.6.7 sizeof运算符 061
2.6.8 new和delete运算符 062
2.7 表达式 062
2.8 结合性与优先级 063
2.9 本章小结 064
第3章 算法与语句 065
3.1 算法 066
3.1.1 什么是算法 066
3.1.2 算法的描述方法 066
3.1.3 3种程序的控制结构 067
3.1.4 算法应用举例 068
3.2 语句 069
3.3 顺序语句 069
3.4 分支语句 070
3.4.1 if判断语句 070
3.4.2 switch语句 074
3.5 循环语句 076
3.5.1 使用跳转语句goto实现循环 077
3.5.2 使用while语句根据关系表达式实现循环 077
3.5.3 使用do…while语句根据关系表达式实现循环 078
3.5.4 使用for语句根据循环次数实现循环 079
3.6 其他控制语句 081
3.6.1 强制结束语句break 081
3.6.2 继续语句continue 082
3.6.3 退出语句exit 083
3.7 异常处理语句 084
3.8 本章小结 086
第4章 面向过程与面向对象编程 087
4.1 函数 088
4.1.1 函数的声明和定义 088
4.1.2 为函数设置参数 089
4.1.3 为函数参数设置默认值 089
4.1.4 使用指针/引用参数 089
4.1.5 使用数组参数 091
4.1.6 为函数设置动态参数 091
4.1.7 定义内联函数 092
4.1.8 定义和使用重载函数 093
4.1.9 应用函数模板定义通用函数 094
4.1.10 应用函数指针调用不同的函数 094
4.1.11 函数的递归调用 095
4.2 类和对象 095
4.2.1 深入理解类的概念 096
4.2.2 类的声明 096
4.2.3 对象的声明和实例化 096
4.2.4 类成员的访问 096
4.2.5 类成员的保护 096
4.2.6 构造函数的定义及调用 097
4.2.7 析构函数的定义及调用过程分析 099
4.2.8 类的继承 100
4.2.9 为类定义内联方法 106
4.2.10 定义静态成员数据和静态方法 106
4.2.11 定义友元类和友元函数 107
4.2.12 重载运算符 109
4.3 异常处理 111
4.3.1 异常捕捉 111
4.3.2 抛出异常 112
4.4 本章小结 113
第5章 对话框应用程序 114
5.1 构建对话框应用程序 115
5.2 对话框的操作 118
5.2.1 创建对话框 118
5.2.2 显示对话框 119
5.2.3 设置对话框属性 121
5.3 对话框中控件的操作 123
5.3.1 添加控件 123
5.3.2 选择控件 124
5.3.3 复制控件 124
5.3.4 删除控件 124
5.3.5 对齐控件 124
5.3.6 添加控件成员变量 126
5.3.7 控件的子类化 128
5.4 添加数据成员和成员函数 129
5.4.1 添加普通的数据成员 130
5.4.2 添加普通的成员函数 130
5.4.3 添加消息处理函数 131
5.5 Windows消息对话框 132
5.6 Windows通用对话框 133
5.6.1 使用文件对话框获取磁盘中的文件 133
5.6.2 使用“查找/替换”对话框查找并替换编辑框中的文本 135
5.6.3 使用“字体”对话框获取字体信息 137
5.6.4 使用“打印”对话框获取打印机设备上下文 139
5.6.5 使用“页面设置”对话框设计打印纸大小 141
5.7 本章小结 143
第6章 文档/视图应用程序 144
6.1 构建文档/视图应用程序 145
6.2 文档、视图结构的创建 146
6.2.1 文档模板的创建 146
6.2.2 文档的创建 147
6.2.3 框架与视图的创建 148
6.3 文档模板 150
6.3.1 文档管理器 150
6.3.2 文档模板 151
6.4 文档对象 152
6.4.1 文档对象的主要方法 152
6.4.2 文档对象的序列化 152
6.4.3 文档的初始化 153
6.4.4 文档的命令处理 154
6.4.5 文档的销毁 155
6.5 视图对象 157
6.5.1 视图对象主要方法 157
6.5.2 视图对象的初始化 157
6.5.3 视图的销毁 158
6.6 框架对象 160
6.6.1 框架对象的主要方法 160
6.6.2 框架的初始化 161
6.6.3 框架的命令消息处理 161
6.7 视图分割 162
6.7.1 划分子窗口 162
6.7.2 任意划分子窗口 164
6.8 视图窗口的高级应用 168
6.8.1 隐藏视图创建选择窗口 168
6.8.2 动态创建视图窗口 168
6.8.3 在视图窗口中显示网页 170
6.9 本章小结 172
第7章 控件 173
7.1 静态文本控件(Static Text) 174
7.1.1 静态文本控件概述 174
7.1.2 静态文本控件的主要属性 174
7.1.3 静态文本控件的主要方法、事件 175
7.1.4 静态文本控件在界面中的应用 176
7.2 编辑框控件(Edit Box) 177
7.2.1 编辑框控件概述 178
7.2.2 编辑框控件的主要属性 178
7.2.3 编辑框控件的主要方法、事件 178
7.2.4 使用编辑框控件设计登录对话框 181
7.3 按钮控件(Button) 182
7.3.1 按钮控件概述 183
7.3.2 按钮控件的主要属性 183
7.3.3 按钮控件的主要方法、事件 183
7.3.4 简单计算器程序设计 186
7.4 列表框控件(List Box) 187
7.4.1 列表框控件概述 187
7.4.2 列表框控件的主要属性 187
7.4.3 列表框控件的主要方法、事件 188
7.4.4 操作列表框控件中的数据 190
7.5 组合框控件(Combo Box) 192
7.5.1 组合框控件概述 192
7.5.2 组合框控件的主要属性 192
7.5.3 组合框控件的主要方法、事件 193
7.5.4 自动调整组合框的列表宽度 194
7.6 列表视图控件(List Control) 195
7.6.1 列表视图控件概述 195
7.6.2 列表视图控件的主要属性 196
7.6.3 列表视图控件的主要方法、事件 196
7.6.4 以列表视图控件的图标风格显示数据 199
7.7 树视图控件(Tree Control) 200
7.7.1 树视图控件概述 200
7.7.2 树视图控件的主要属性 200
7.7.3 树视图控件的主要方法、事件 200
7.7.4 利用树视图控件显示树状结构 205
7.8 本章小结 206
第8章 菜单、工具栏和状态栏设计 207
8.1 菜单设计 208
8.1.1 菜单资源设计 208
8.1.2 菜单项的命令处理 212
8.1.3 菜单项的更新机制 214
8.1.4 菜单类介绍 215
8.1.5 使用菜单类创建菜单 221
8.1.6 设计弹出式菜单 222
8.2 工具栏设计 223
8.2.1 工具栏资源设计 224
8.2.2 工具栏的命令处理 225
8.2.3 工具栏类(CToolBar)介绍 226
8.2.4 使用工具栏类创建工具栏 229
8.2.5 工具栏控制类(CToolBarCtrl)介绍 232
8.2.6 使用工具栏控制类创建工具栏 234
8.3 状态栏设计 235
8.3.1 状态栏类(CStatusBar)介绍 235
8.3.2 使用状态栏类创建状态栏 238
8.3.3 在状态栏中添加进度条控件 239
8.3.4 状态栏控制类(CStatusBarCtrl)介绍 240
8.3.5 使用状态栏控制类创建状态栏 241
8.4 本章小结 242
第9章 文字与图形处理技术 243
9.1 图形设备接口 244
9.1.1 设备上下文介绍 244
9.1.2 熟悉使用GDI对象 245
9.2 文本输出 255
9.2.1 使用TextOut方法在指定位置输出文本 255
9.2.2 使用ExtTextOut方法在指定区域输出文本 255
9.2.3 使用TabbedTextOut方法根据制表位输出文本 257
9.2.4 使用DrawText方法格式化输出文本 257
9.3 文本属性 258
9.3.1 设置文本字体 259
9.3.2 设置文本对齐方式 261
9.3.3 设置文本颜色 262
9.3.4 设置文本背景颜色 262
9.3.5 设置文本背景模式 263
9.3.6 获取文本长度 263
9.4 图形绘制 264
9.4.1 利用点线绘制多边形 264
9.4.2 如何快速地绘制图形 265
9.4.3 如何填充指定的区域 268
9.4.4 绘制不规则图形 269
9.5 图像显示 270
9.5.1 设备相关和设备无关位图 270
9.5.2 在视图中绘制位图 271
9.5.3 放大和缩小显示图片 272
9.6 本章小结 273
第10章 打印技术 274
10.1 打印概述 275
10.1.1 文档视图的打印流程 275
10.1.2 CPrintinfo结构 279
10.1.3 动态计算页码 280
10.2 映射模式与坐标系统 282
10.2.1 固定比率与可变比率映射模式 283
10.2.2 MM_TEXT映射模式 283
10.2.3 设置逻辑与设备坐标 284
10.3 打印控制 284
10.3.1 获取打印纸的左边距和上边距 284
10.3.2 控制打印方向 285
10.3.3 设置打印份数 287
10.4 打印实例 288
10.4.1 设计报表打印程序 288
10.4.2 设计单据打印报表 291
10.4.3 设计工作证打印程序 292
10.4.4 设计图片打印程序 294
10.5 本章小结 296
第11章 多媒体技术 297
11.1 图像处理技术 298
11.1.1 位图文件结构分析 298
11.1.2 将位图文件绘制成对话框背景 299
11.1.3 将设备上下文转换为位图 300
11.2 音频处理技术 302
11.2.1 播放应用程序中的WAVE资源 302
11.2.2 播放WAVE文件 302
11.2.3 音量大小控制 304
11.3 视频处理技术 307
11.3.1 播放AVI文件 307
11.3.2 将AVI动画分解成BMP位图 310
11.3.3 将BMP位图组合成AVI动画 312
11.4 本章小结 316
第12章 ODBC数据库编程 317
12.1 ODBC概述 318
12.2 设置ODBC数据源 318
12.3 MFC ODBC类 320
12.3.1 CDatabase类介绍 320
12.3.2 CRecordset类介绍 320
12.3.3 CFieldExchange类介绍 322
12.3.4 CRecordView类介绍 322
12.3.5 CDBException类介绍 323
12.4 MFC ODBC数据库操作技术 323
12.4.1 连接数据源 323
12.4.2 打开记录集 323
12.4.3 移动记录 324
12.4.4 向数据表中添加记录 325
12.4.5 修改现有记录 329
12.4.6 删除指定的记录 331
12.4.7 根据条件查询记录 332
12.4.8 使用SQL语句操作数据库 333
12.5 本章小结 335
第13章 ADO数据库编程 336
13.1 ADO概述 337
13.2 ADO对象 337
13.2.1 连接对象Connection 337
13.2.2 命令对象Command 338
13.2.3 记录集对象Recordset 339
13.3 ADO数据库操作技术 341
13.3.1 导入ADO动态链接库 341
13.3.2 使用ADO智能指针 342
13.3.3 初始化COM环境 342
13.3.4 连接数据库 342
13.3.5 获取连接数据库字符串的简单方法 345
13.3.6 打开记录集 346
13.3.7 遍历记录集 347
13.3.8 获取记录集记录数 349
13.3.9 向记录集中添加数据 349
13.3.10 修改现有记录 351
13.3.11 删除记录集中指定记录 352
13.3.12 使用SQL语句操作数据库 354
13.3.13 向数据库中添加位图 356
13.4 本章小结 358
第14章 文件操作 359
14.1 C库和运行库函数文件操作 360
14.1.1 C库和运行库函数文件操作介绍 360
14.1.2 创建并写入文件 364
14.1.3 获取文件位置指针与文件长度 365
14.2 CFile类文件操作 367
14.2.1 CFile类介绍 367
14.2.2 获取文件属性 370
14.2.3 十六进制显示文本文件 373
14.2.4 使用CFile实现文件的复制 374
14.2.5 报告文件异常 375
14.2.6 CFile类与CStdioFile类的比较 376
14.3 MFC串行化 378
14.3.1 CArchive类介绍 378
14.3.2 Serialize函数分析 379
14.3.3 创建串行化类 380
14.3.4 实现对象的串行化 380
14.4 文件查找类 382
14.4.1 文件查找类介绍 382
14.4.2 查找指定文件 384
14.4.3 显示磁盘目录 385
14.5 本章小结 387
第15章 注册表与INI文件 388
15.1 注册表 389
15.1.1 注册表简介 389
15.1.2 注册表结构分析 389
15.2 注册表函数 390
15.2.1 CRegKey类 390
15.2.2 注册表数据的写入 393
15.2.3 注册表的相关查询 398
15.2.4 注册表数据的枚举 400
15.3 INI文件 404
15.3.1 INI文件简介 404
15.3.2 INI文件结构分析 404
15.4 INI文件操作函数 404
15.4.1 操作INI文件函数介绍 405
15.4.2 INI文件中键名数据的读写 407
15.4.3 读写结构数据 410
15.4.4 节名与键名的枚举 411
15.5 本章小结 412
第16章 动态链接库 413
16.1 链接库概述 414
16.1.1 链接库的构成 414
16.1.2 动态链接库和静态链接库 414
16.2 链接库的创建与使用 415
16.2.1 通过向导创建静态链接库 415
16.2.2 使用静态链接库 416
16.2.3 创建Win32动态链接库 417
16.2.4 MFC的3种动态链接库 419
16.3 链接库的导出 421
16.3.1 动态链接库的命名改编 421
16.3.2 使用dumpbin工具查看链接库 421
16.3.3 使用DEF文件导出函数名称 422
16.3.4 隐式调用与动态加载 423
16.3.5 从动态链接库中导出类 424
16.4 动态链接库高级应用 427
16.4.1 模块状态 427
16.4.2 资源动态链接库 429
16.4.3 钩子介绍 433
16.4.4 使用钩子动态链接库监控键盘 435
16.5 本章小结 438
第17章 进程与线程 439
17.1 进程 440
17.1.1 理解进程的概念 440
17.1.2 进程实例句柄 440
17.1.3 进程的创建 441
17.1.4 进程的终止 443
17.2 进程的应用 444
17.2.1 启动外部程序 444
17.2.2 进程间的消息通信 445
17.2.3 进程间内存共享 447
17.2.4 列举系统中的进程 449
17.3 线程 451
17.3.1 深入理解线程 451
17.3.2 线程的创建与终止 451
17.3.3 用户界面线程 453
17.4 线程同步 455
17.4.1 线程同步的重要性 455
17.4.2 互斥实现线程同步 456
17.4.3 临界区实现线程同步 458
17.4.4 事件实现线程同步 460
17.5 本章小结 461
第18章 网络编程 462
18.1 网络基础知识 463
18.1.1 计算机网络的定义、功能及分类 463
18.1.2 OSI参考模型 463
18.1.3 TCP/IP协议簇分析 464
18.2 局域网技术 465
18.2.1 获取网卡地址 465
18.2.2 映射网络驱动器 466
18.2.3 获取局域网计算机名称和IP 467
18.2.4 获得网上共享资源 470
18.2.5 在局域网中发送短消息 472
18.3 Windows套接字技术 472
18.3.1 套接字概述 473
18.3.2 WinSock API相关函数 473
18.3.3 使用套接字函数设计网络聊天室 477
18.4 WinSock类 481
18.4.1 CAsyncSocket类介绍 481
18.4.2 CSocket类介绍 485
18.4.3 使用WinSock类设计网络聊天室 485
18.5 本章小结 488
第19章 程序调试 489
19.1 断点跟踪 490
19.1.1 设置普通断点 490
19.1.2 设置条件断点 491
19.1.3 设置数据断点 492
19.1.4 设置消息断点 493
19.1.5 进行断点跟踪 493
19.2 调试窗口 496
19.2.1 使用“Watch”窗口查看变量值 496
19.2.2 使用“Call Stack”窗口查看函数的调用 497
19.2.3 使用“Memory”窗口查看对象的内存信息 497
19.2.4 使用“Variables”窗口查看变量信息 499
19.2.5 使用“Registers”窗口查看寄存器信息 499
19.2.6 使用“Disassembly”窗口查看反汇编代码 500
19.3 内存泄露检测 502
19.4 本章小结 502
附录 实例快速检索 503