第1篇 基础知识 3
第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 IDE开发环境 4
1.2.2 Visual C++6.0 IDE菜单介绍 5
1.2.3 Visual C++6.0 IDE工具栏介绍 11
1.2.4 Visual C++6.0工作区窗口介绍 14
1.2.5 Visual C++6.0控件面板介绍 16
1.2.6 Visual C++6.0输出窗口介绍 16
1.3 设置自己的开发环境 17
1.3.1 自定义工具栏 17
1.3.2 自定义代码编辑窗口 18
1.4 创建一个简单的程序 20
1.4.1 创建工程 20
1.4.2 编辑程序 22
1.5 小结 23
第2章 C++语言基础 25
2.1 C++文件结构 26
2.1.1 头文件的构成 26
2.1.2 源文件的构成 26
2.2 C++语言基本要素 27
2.2.1 标识符 27
2.2.2 关键字 27
2.2.3 常量 28
2.2.4 变量 28
2.2.5 变量的存储类型 29
2.3 数据类型 31
2.3.1 数值类型 31
2.3.2 字符类型 33
2.3.3 数组类型 33
2.3.4 布尔类型 35
2.3.5 枚举类型 35
2.3.6 结构体类型 37
2.3.7 共用体类型 40
2.3.8 指针类型 40
2.3.9 引用类型 44
2.3.10 自定义类型 45
2.4 运算符 45
2.4.1 赋值运算符 45
2.4.2 算术运算符 47
2.4.3 关系运算符 48
2.4.4 逻辑运算符 49
2.4.5 自增自减运算符 50
2.4.6 位运算符 51
2.4.7 sizeof运算符 54
2.4.8 new和delete运算符 56
2.4.9 结合性与优先级 57
2.5 表达式 58
2.5.1 逗号表达式 59
2.5.2 三目元表达式 59
2.6 程序编码规范 60
2.6.1 合理使用注释 60
2.6.2 统一代码缩进 62
2.6.3 代码换行 63
2.6.4 合理使用空格 63
2.6.5 命名规则 64
2.7 小结 65
2.8 实践与练习 66
第3章 语句 67
3.1 语句的构成 68
3.2 复合语句 68
3.3 分支语句 70
3.3.1 if语句 70
3.3.2 switch语句 72
3.4 循环语句 75
3.4.1 for语句 75
3.4.2 while语句 78
3.4.3 do while语句 79
3.4.4 嵌套循环语句 80
3.5 跳转语句 80
3.5.1 goto语句 81
3.5.2 return语句 82
3.5.3 exit语句 83
3.6 小结 84
3.7 实践与练习 84
第4章 面向过程程序设计 85
4.1 函数 86
4.1.1 定义和调用函数 86
4.1.2 设置默认值参数 89
4.1.3 设置数组参数 90
4.1.4 设置指针/引用参数 93
4.1.5 省略号参数 95
4.1.6 内联函数 97
4.1.7 重载函数 97
4.1.8 函数递归调用 100
4.1.9 函数指针 101
4.2 作用域和生命期 103
4.2.1 局部作用域 104
4.2.2 全局作用域 105
4.2.3 定义和使用命名空间 106
4.3 函数模板 111
4.3.1 定义和使用函数模板 112
4.3.2 重载函数模板 113
4.4 小结 114
4.5 实践与练习 114
第5章 面向对象程序设计 115
5.1 类和对象 116
5.1.1 类的定义 116
5.1.2 类成员的访问 118
5.1.3 构造函数和析构函数 120
5.1.4 内联成员函数 126
5.1.5 静态类成员 128
5.1.6 隐藏的this指针 131
5.1.7 运算符重载 132
5.1.8 友元类和友元方法 136
5.1.9 类的继承 140
5.1.10 类域 151
5.1.11 嵌套类 152
5.1.12 局部类 154
5.2 类模板 155
5.2.1 类模板的定义及应用 155
5.2.2 定义类模板的静态数据成员 160
5.3 异常处理 161
5.3.1 异常捕捉语句 161
5.3.2 抛出异常 162
5.4 小结 164
5.5 实践与练习 164
第2篇 核心技术 167
第6章 对话框应用程序设计 167
6.1 构建应用程序 168
6.1.1 构建对话框应用程序 168
6.1.2 构建单文档/视图应用程序 168
6.1.3 构建多文档/视图应用程序 171
6.2 对话框的创建及显示 171
6.2.1 创建对话框 172
6.2.2 显示对话框 172
6.3 对话框属性设置 174
6.3.1 设置对话框的标题 174
6.3.2 设置对话框的边框风格 175
6.3.3 使用对话框关联菜单 175
6.3.4 设置对话框字体 176
6.4 在对话框中操作控件 176
6.4.1 在对话框中使用控件 176
6.4.2 控件对齐方式 177
6.4.3 为控件关联变量 179
6.5 添加对话框成员及成员函数 180
6.5.1 添加普通成员及成员函数 181
6.5.2 添加消息处理函数 182
6.5.3 手动添加命令消息处理函数 182
6.6 消息对话框 183
6.7 Windows通用对话框 185
6.7.1 使用“文件”对话框打开和保存文件 185
6.7.2 使用“字体”对话框设置文本字体 187
6.7.3 使用“颜色”对话框设置文本背景颜色 189
6.7.4 使用“查找/替换”对话框在文本中替换字符串 191
6.7.5 使用“打印”对话框进行打印 194
6.7.6 使用“文件浏览”对话框选择文件夹 196
6.8 小结 197
6.9 实践与练习 198
第7章 常用控件 199
7.1 静态文本控件 200
7.1.1 设置显示文本 200
7.1.2 设置文本颜色 201
7.1.3 模拟按钮控件的单击事件 201
7.2 编辑框控件 202
7.2.1 设置密码编辑框 202
7.2.2 设置只读编辑框 202
7.2.3 设置编辑框多行显示 203
7.2.4 设置编辑框按Enter键换行 203
7.2.5 使用编辑框控件录入数据 203
7.3 图像控件 204
7.3.1 通过属性显示位图 204
7.3.2 设置边框颜色和填充颜色 204
7.3.3 居中显示位图资源 205
7.4 按钮控件 205
7.4.1 使用按钮控件显示图标 205
7.4.2 使用按钮控件处理用户操作 206
7.5 复选框控件 206
7.5.1 设置复选框控件的选中状态 207
7.5.2 使用复选框控件统计信息 207
7.6 单选按钮控件 209
7.6.1 为单选按钮控件分组 209
7.6.2 获得被选择的单选按钮的文本 209
7.7 组合框控件 210
7.7.1 设置控件风格 211
7.7.2 调整列表部分的显示大小 211
7.7.3 通过属性插入数据 211
7.7.4 调整数据显示顺序 212
7.7.5 获得选择的数据 212
7.8 列表框控件 213
7.8.1 在指定位置插入文本 213
7.8.2 避免插入重复数据 214
7.8.3 实现复选数据功能 216
7.9 进度条控件 217
7.9.1 设置显示风格 217
7.9.2 设置进度条的范围 217
7.10 小结 218
7.11 实践与练习 218
第8章 菜单 219
8.1 菜单资源设计 220
8.2 菜单项的命令处理 222
8.3 动态创建菜单 223
8.4 创建弹出式菜单 225
8.5 创建图标菜单 227
8.6 小结 233
8.7 实践与练习 233
第9章 工具栏和状态栏 235
9.1 工具栏设计 236
9.1.1 工具栏资源设计 236
9.1.2 工具栏的命令处理 237
9.1.3 动态创建工具栏 238
9.1.4 设置工具栏按钮提示 243
9.1.5 设计XP风格工具栏 245
9.2 状态栏设计 247
9.2.1 创建状态栏 247
9.2.2 在状态栏中显示控件 250
9.3 小结 251
9.4 实践与练习 251
第10章 高级控件 253
10.1 图像列表控件 254
10.1.1 创建图像列表 254
10.1.2 将图像绘制到程序中 255
10.2 列表视图控件 256
10.2.1 设置显示风格 256
10.2.2 设计登录窗口 257
10.2.3 将数据加载到列表 258
10.2.4 具有位图背景的控件 261
10.2.5 动态创建列表视图控件 263
10.3 树控件 264
10.3.1 动态创建树控件 264
10.3.2 带复选功能的树控件 267
10.3.3 可编辑节点的树控件 270
10.4 标签控件 272
10.4.1 设置显示方式 272
10.4.2 图标标签控件 272
10.4.3 设计程序模块 274
10.5 应用工具提示控件 276
10.6 小结 279
10.7 实践与练习 279
第11章 自定义MFC控件 281
11.1 自定义编辑框控件 282
11.1.1 数字编辑框 282
11.1.2 特殊文本颜色编辑框 283
11.1.3 位图背景编辑框 285
11.2 自定义按钮控件 287
11.2.1 图标按钮 287
11.2.2 热点按钮 290
11.2.3 圆形按钮 294
11.3 位图背景树控件 296
11.4 三态效果复选框控件 299
11.5 小结 301
11.6 实践与练习 301
第12章 文本、图形、图像处理 303
12.1 GDI概述 304
12.1.1 设备上下文 304
12.1.2 GDI对象 305
12.2 文本输出 306
12.2.1 在具体位置和区域中输出文本 306
12.2.2 利用制表位控制文本输出 308
12.2.3 设置字体及文本颜色 309
12.2.4 在路径中输出文本 312
12.2.5 在图像背景上输出透明文本 313
12.3 绘制图形 314
12.3.1 利用线条绘制多边形 314
12.3.2 直接绘制多边形 316
12.3.3 绘制控件外观 318
12.3.4 填充图形区域 319
12.4 图像显示 321
12.4.1 在设备上下文中绘制图像 321
12.4.2 从磁盘中加载图像到窗口中 324
12.4.3 位图文件分析 326
12.4.4 根据位图数据直接绘图 328
12.4.5 显示JPEG图像 330
12.5 GDI+图像编程 331
12.5.1 在Visual C++6.0中使用GDI+ 332
12.5.2 利用GDI+实现图像类型转换 332
12.5.3 使用GDI+显示GIF图像 336
12.6 小结 338
12.7 实践与练习 339
第3篇 高级应用 343
第13章 多媒体技术 343
13.1 音频处理技术 344
13.1.1 加载应用程序Wave资源 344
13.1.2 播放WAV文件 345
13.1.3 设计音频播放器 349
13.2 视频处理技术 351
13.2.1 使用控件播放AVI文件 351
13.2.2 使用函数播放AVI文件 352
13.2.3 将位图组合为AVI文件 354
13.2.4 视频文件压缩处理 359
13.3 小结 367
13.4 实践与练习 367
第14章 打印技术 369
14.1 打印基础 370
14.1.1 映射模式 370
14.1.2 获取打印机设备上下文 370
14.2 文档/视图应用程序打印 371
14.3 对话框应用程序打印 373
14.3.1 打印对话框中的表格 373
14.3.2 打印磁盘中的文件 375
14.4 打印设置 377
14.4.1 设置打印方向 377
14.4.2 设置打印页面 380
14.5 修改打印预览 383
14.6 小结 386
14.7 实践与练习 386
第15章 文件与注册表操作 387
15.1 普通文件操作 388
15.1.1 应用C函数进行文件操作 388
15.1.2 使用CFile类进行文件操作 391
15.1.3 使用CFileFind类进行文件查找 396
15.2 串行化 400
15.2.1 串行化基础 400
15.2.2 编写串行化类 402
15.3 INI文件操作 404
15.3.1 INI文件基本结构 404
15.3.2 读写INI文件 405
15.4 注册表操作 408
15.4.1 使用API函数操作注册表 409
15.4.2 基于CRegKey类操作注册表 414
15.5 小结 417
15.6 实践与练习 417
第16章 ADO编程 419
16.1 ADO编程基础 420
16.1.1 ADO概述 420
16.1.2 在Visual C++中应用ADO技术 420
16.2 ADO对象 420
16.2.1 ADO连接对象 421
16.2.2 ADO记录集对象 423
16.2.3 ADO命令对象 427
16.2.4 ADO参数对象 428
16.3 ADO对象应用 429
16.3.1 封装ADO对象 430
16.3.2 使用ADO对象添加、修改、删除数据 432
16.3.3 使用ADO对象检索数据 436
16.4 小结 438
16.5 实践与练习 438
第17章 动态链接库 439
17.1 动态链接库基础 440
17.1.1 动态链接库特点 440
17.1.2 动态链接库的访问 440
17.1.3 查看动态链接库 441
17.2 创建和使用Win32动态链接库 442
17.2.1 创建动态链接库 442
17.2.2 调用动态链接库 444
17.2.3 向动态链接库中添加C++类和资源 445
17.2.4 访问动态链接库中的C++类和资源 446
17.2.5 使用动态链接库设计多国语言的应用程序 448
17.3 小结 452
17.4 实践与练习 452
第18章 多线程程序设计 453
18.1 线程概述 454
18.1.1 理解Windows内核对象 454
18.1.2 理解进程和线程 454
18.2 线程的创建 454
18.2.1 使用CreateThread函数创建线程 455
18.2.2 使用_beginthreadex函数创建线程 456
18.2.3 使用AfxBeginThread函数创建线程 457
18.2.4 应用MFC类库创建线程 459
18.3 线程的挂起、唤醒与终止 462
18.4 线程同步 464
18.4.1 多线程潜在的危险 465
18.4.2 使用事件对象实现线程同步 466
18.4.3 使用信号量对象实现线程同步 469
18.4.4 使用临界区对象实现线程同步 470
18.4.5 使用互斥对象实现线程同步 473
18.5 小结 475
18.6 实践与练习 475
第19章 网络套接字编程 477
19.1 计算机网络基础 478
19.1.1 OSI参考模型 478
19.1.2 IP地址 479
19.1.3 地址解析 479
19.1.4 域名系统 480
19.1.5 TCP/IP协议 481
19.1.6 端口 482
19.2 套接字概述 483
19.2.1 套接字概述 483
19.2.2 网络字节顺序 483
19.2.3 套接字I/O模式 483
19.3 套接字函数 484
19.3.1 套接字函数介绍 484
19.3.2 基于套接字函数的网络聊天系统 489
19.4 MFC套接字编程 494
19.4.1 CAsyncSocket类 495
19.4.2 CSocket类 499
19.4.3 基于TCP协议的网络聊天室系统 500
19.5 小结 506
19.6 实践与练习 506
第4篇 项目实战 509
第20章 图书管理系统 509
20.1 系统分析 510
20.1.1 需求分析 510
20.1.2 可行性分析 510
20.1.3 编写项目计划书 511
20.2 系统设计 513
20.2.1 系统目标 513
20.2.2 系统功能结构 513
20.2.3 业务流程图 514
20.3 数据库设计 514
20.3.1 数据库分析 514
20.3.2 创建数据库 515
20.3.3 创建数据表 516
20.4 创建工程 518
20.5 公共类设计 519
20.5.1 自绘菜单类CMyCoolMenu 519
20.5.2 自定义编辑框类CKeyEdit 524
20.5.3 自定义列表视图类CCustomGrid 526
20.6 启动界面的设计 528
20.6.1 启动界面设计 528
20.6.2 启动界面的淡入淡出效果 528
20.7 登录对话框设计 529
20.7.1 登录对话框的界面设计 530
20.7.2 设置按钮显示位图 530
20.7.3 设置按Enter键移动焦点 531
20.7.4 设置“登录”按钮功能 531
20.8 主窗体设计 532
20.8.1 菜单设计 533
20.8.2 工具栏设计 533
20.8.3 主窗体界面设计 534
20.9 “基本信息管理”模块设计 535
20.9.1 “基本信息管理模块”界面设计 535
20.9.2 设置选项卡 535
20.9.3 初始化标签控件 541
20.9.4 设置按钮功能 541
20.10 “库存信息管理”模块设计 542
20.10.1 “库存信息管理”模块界面设计 542
20.10.2 设置选项卡 543
20.11 “查询管理”模块设计 550
20.11.1 “查询管理”模块界面设计 551
20.11.2 设置选项卡 551
20.12 运行项目 556
20.13 开发常见问题与解决 558
20.13.1 书写错误的函数名 558
20.13.2 使用自定义类时导入头文件 558
20.13.3 屏蔽按Enter键关闭窗口功能 559
20.13.4 截获按Enter键后的潜在问题 559
20.13.5 数据添加时字段大小越界 560
20.13.6 如何调用文档/视图结构打印 560
20.14 小结 562