第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.0IDE开发环境 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工作区窗口介绍 13
1.2.5 Visual C++6.0控件面板介绍 14
1.2.6 Visual C++6.0输出窗口介绍 15
1.3 设置自己的开发环境 16
1.3.1 自定义工具栏 16
1.3.2 自定义代码编辑窗口 17
1.4 创建一个简单的程序 18
1.4.1 创建工程 18
1.4.2 编辑程序 21
1.5 小结 22
第2章 C++语言基础 23
2.1 C++文件结构 24
2.1.1 头文件的构成 24
2.1.2 源文件的构成 24
2.2 C++语言基本要素 25
2.2.1 标识符 25
2.2.2 关键字 25
2.2.3 常量 26
2.2.4 变量 26
2.2.5 变量的存储类型 27
2.3 数据类型 29
2.3.1 数值类型 29
2.3.2 字符类型 30
2.3.3 数组类型 31
2.3.4 布尔类型 33
2.3.5 枚举类型 33
2.3.6 结构体类型 34
2.3.7 共用体类型 37
2.3.8 指针类型 38
2.3.9 引用类型 41
2.3.10 自定义类型 42
2.4 运算符 43
2.4.1 赋值运算符 43
2.4.2 算术运算符 44
2.4.3 关系运算符 45
2.4.4 逻辑运算符 46
2.4.5 自增自减运算符 47
2.4.6 位运算符 48
2.4.7 sizeof运算符 51
2.4.8 new和delete运算符 52
2.4.9 结合性与优先级 53
2.5 表达式 55
2.5.1 逗号表达式 55
2.5.2 三目元表达式 56
2.6 程序编码规范 56
2.6.1 合理使用注释 56
2.6.2 统一代码缩进 58
2.6.3 代码换行 59
2.6.4 合理使用空格 60
2.6.5 命名规则 61
2.7 小结 62
2.8 实践与练习 62
第3章 语句 63
3.1 语句的构成 64
3.2 复合语句 64
3.3 分支语句 66
3.3.1 if语句 66
3.3.2 switch语句 68
3.4 循环语句 71
3.4.1 for语句 71
3.4.2 while语句 74
3.4.3 do while语句 74
3.4.4 嵌套循环语句 75
3.5 跳转语句 76
3.5.1 goto语句 76
3.5.2 return语句 77
3.5.3 exit语句 79
3.6 小结 79
3.7 实践与练习 79
第4章 面向过程程序设计 81
4.1 函数 82
4.1.1 定义和调用函数 82
4.1.2 设置默认值参数 85
4.1.3 设置数组参数 86
4.1.4 设置指针/引用参数 89
4.1.5 省略号参数 91
4.1.6 内联函数 92
4.1.7 重载函数 93
4.1.8 函数递归调用 96
4.1.9 函数指针 97
4.2 作用域和生命期 99
4.2.1 局部作用域 99
4.2.2 全局作用域 101
4.2.3 定义和使用命名空间 102
4.3 函数模板 107
4.3.1 定义和使用函数模板 107
4.3.2 重载函数模板 108
4.4 小结 109
4.5 实践与练习 109
第5章 面向对象程序设计 111
5.1 类和对象 112
5.1.1 类的定义 112
5.1.2 类成员的访问 114
5.1.3 构造函数和析构函数 116
5.1.4 内联成员函数 121
5.1.5 静态类成员 124
5.1.6 隐藏的this指针 126
5.1.7 运算符重载 128
5.1.8 友元类和友元方法 131
5.1.9 类的继承 135
5.1.10 类域 146
5.1.11 嵌套类 147
5.1.12 局部类 149
5.2 类模板 149
5.2.1 类模板的定义及应用 149
5.2.2 定义类模板的静态数据成员 154
5.3 异常处理 156
5.3.1 异常捕捉语句 156
5.3.2 抛出异常 157
5.4 小结 159
5.5 实践与练习 159
第2篇 核心技术 163
第6章 对话框应用程序设计 163
6.1 构建应用程序 164
6.1.1 构建对话框应用程序 164
6.1.2 构建单文档/视图应用程序 164
6.1.3 构建多文档/视图应用程序 167
6.2 对话框的创建及显示 167
6.2.1 创建对话框 168
6.2.2 显示对话框 168
6.3 对话框属性设置 170
6.3.1 设置对话框的标题 170
6.3.2 设置对话框的边框风格 171
6.3.3 使用对话框关联菜单 171
6.3.4 设置对话框字体 172
6.4 在对话框中操作控件 172
6.4.1 在对话框中使用控件 172
6.4.2 控件对齐方式 173
6.4.3 为控件关联变量 175
6.5 添加对话框成员及成员函数 176
6.5.1 添加普通成员及成员函数 176
6.5.2 添加消息处理函数 177
6.5.3 手动添加命令消息处理函数 178
6.6 消息对话框 178
6.7 Windows通用对话框 180
6.7.1 使用“文件”对话框打开和保存文件 180
6.7.2 使用“字体”对话框设置文本字体 183
6.7.3 使用“颜色”对话框设置文本背景颜色 184
6.7.4 使用“查找/替换”对话框在文本中替换字符串 186
6.7.5 使用“打印”对话框进行打印 189
6.7.6 使用“浏览文件夹”对话框选择文件夹 191
6.8 小结 192
6.9 实践与练习 192
第7章 常用控件 193
7.1 静态文本控件 194
7.1.1 设置显示文本 194
7.1.2 设置文本颜色 194
7.1.3 模拟按钮控件的单击事件 195
7.2 编辑框控件 195
7.2.1 设置密码编辑框 196
7.2.2 设置只读编辑框 196
7.2.3 设置编辑框多行显示 196
7.2.4 设置编辑框按Enter键换行 197
7.2.5 使用编辑框控件录入数据 197
7.3 图像控件 197
7.3.1 通过属性显示位图 198
7.3.2 设置边框颜色和填充颜色 198
7.3.3 居中显示位图资源 198
7.4 按钮控件 199
7.4.1 使用按钮控件显示图标 199
7.4.2 使用按钮控件处理用户操作 200
7.5 复选框控件 200
7.5.1 设置复选框控件的选中状态 200
7.5.2 使用复选框控件统计信息 201
7.6 单选按钮控件 202
7.6.1 为单选按钮控件分组 202
7.6.2 获得被选择的单选按钮的文本 203
7.7 组合框控件 204
7.7.1 设置控件风格 204
7.7.2 调整列表部分的显示大小 204
7.7.3 通过属性插入数据 205
7.7.4 调整数据显示顺序 205
7.7.5 获得选择的数据 205
7.8 列表框控件 206
7.8.1 在指定位置插入文本 207
7.8.2 避免插入重复数据 208
7.8.3 实现复选数据功能 209
7.9 进度条控件 210
7.9.1 设置显示风格 210
7.9.2 设置进度条的范围 211
7.10 小结 211
7.11 实践与练习 211
第8章 菜单 213
8.1 菜单资源设计 214
8.2 菜单项的命令处理 216
8.3 动态创建菜单 217
8.4 创建弹出式菜单 219
8.5 创建图标菜单 221
8.6 小结 227
8.7 实践与练习 227
第9章 工具栏和状态栏 229
9.1 工具栏设计 230
9.1.1 工具栏资源设计 230
9.1.2 工具栏的命令处理 231
9.1.3 动态创建工具栏 232
9.1.4 设置工具栏按钮提示 236
9.1.5 设计XP风格工具栏 239
9.2 状态栏设计 241
9.2.1 创建状态栏 241
9.2.2 在状态栏中显示控件 243
9.3 小结 245
9.4 实践与练习 245
第10章 高级控件 247
10.1 图像列表控件 248
10.1.1 创建图像列表 248
10.1.2 将图像绘制到程序中 249
10.2 列表视图控件 250
10.2.1 设置显示风格 250
10.2.2 设计登录窗口 251
10.2.3 将数据加载到列表 252
10.2.4 具有位图背景的控件 255
10.2.5 动态创建列表视图控件 257
10.3 树控件 258
10.3.1 动态创建树控件 258
10.3.2 带复选功能的树控件 261
10.3.3 可编辑节点的树控件 264
10.4 标签控件 266
10.4.1 设置显示方式 266
10.4.2 图标标签控件 266
10.4.3 设计程序模块 268
10.5 应用工具提示控件 270
10.6 小结 272
10.7 实践与练习 273
第11章 自定义MFC控件 275
11.1 自定义编辑框控件 276
11.1.1 数字编辑框 276
11.1.2 特殊文本颜色编辑框 277
11.1.3 位图背景编辑框 279
11.2 自定义按钮控件 280
11.2.1 图标按钮 281
11.2.2 热点按钮 284
11.2.3 圆形按钮 288
11.3 位图背景树控件 290
11.4 三态效果复选框控件 292
11.5 小结 294
11.6 实践与练习 295
第12章 文本、图形、图像处理 297
12.1 GDI概述 298
12.1.1 设备上下文 298
12.1.2 GDI对象 299
12.2 文本输出 300
12.2.1 在具体位置和区域中输出文本 300
12.2.2 利用制表位控制文本输出 302
12.2.3 设置字体及文本颜色 303
12.2.4 在路径中输出文本 305
12.2.5 在图像背景上输出透明文本 306
12.3 绘制图形 308
12.3.1 利用线条绘制多边形 308
12.3.2 直接绘制多边形 310
12.3.3 绘制控件外观 312
12.3.4 填充图形区域 313
12.4 图像显示 315
12.4.1 在设备上下文中绘制图像 315
12.4.2 从磁盘中加载图像到窗口中 318
12.4.3 位图文件分析 319
12.4.4 根据位图数据直接绘图 321
12.4.5 显示JPEG图像 323
12.5 GDI+图像编程 325
12.5.1 在Visual C++6.0中使用GDI+ 325
12.5.2 利用GDI+实现图像类型转换 326
12.5.3 使用GDI+显示GIF图像 329
12.6 小结 332
12.7 实践与练习 332
第13章 文档与视图 333
13.1 构建文档/视图应用程序 334
13.1.1 文档/视图结构概述 334
13.1.2 创建文档/视图结构应用程序 334
13.2 文档/视图结构的创建 335
13.2.1 文档模板的创建 335
13.2.2 文档的创建 337
13.2.3 框架与视图的创建 340
13.3 文档模板概述 343
13.3.1 文档管理器 344
13.3.2 文档模板 347
13.4 文档对象 348
13.4.1 文档对象的主要方法 348
13.4.2 文档的初始化 350
13.4.3 保存文档 351
13.4.4 文档的命令处理 351
13.4.5 文档的销毁 353
13.5 视图对象 356
13.5.1 视图对象的主要方法 356
13.5.2 视图的初始化 357
13.5.3 视图的绘制 358
13.5.4 视图的销毁 359
13.6 框架窗口 362
13.6.1 框架对象的主要方法 362
13.6.2 框架的初始化 363
13.6.3 命令消息处理 364
13.7 文档/视图的应用 365
13.7.1 实例说明 365
13.7.2 实例实现 366
13.8 术语 369
13.9 小结 370
13.10 练习 370
第3篇 高级应用 373
第14章 打印技术 373
14.1 打印基础 374
14.1.1 映射模式 374
14.1.2 获取打印机设备上下文 374
14.2 文档/视图应用程序打印 375
14.3 对话框应用程序打印 377
14.3.1 打印对话框中的表格 377
14.3.2 打印磁盘中的文件 379
14.4 打印设置 381
14.4.1 设置打印方向 381
14.4.2 设置打印页面 384
14.5 修改打印预览 386
14.6 小结 390
14.7 实践与练习 390
第15章 文件与注册表操作 391
15.1 普通文件操作 392
15.1.1 应用C函数进行文件操作 392
15.1.2 使用CFile类进行文件操作 395
15.1.3 使用CFileFind类进行文件查找 400
15.2 串行化 403
15.2.1 串行化基础 404
15.2.2 编写串行化类 406
15.3 INI文件操作 408
15.3.1 INI文件基本结构 408
15.3.2 读写INI文件 408
15.4 注册表操作 411
15.4.1 使用API函数操作注册表 412
15.4.2 基于CRegKey类操作注册表 417
15.5 小结 420
15.6 实践与练习 420
第16章 ADO编程 421
16.1 ADO编程基础 422
16.1.1 ADO概述 422
16.1.2 在Visual C++中应用ADO技术 422
16.2 ADO对象 422
16.2.1 ADO连接对象 423
16.2.2 ADO记录集对象 425
16.2.3 ADO命令对象 429
16.2.4 ADO参数对象 430
16.3 ADO对象应用 431
16.3.1 封装ADO对象 432
16.3.2 使用ADO对象添加、修改、删除数据 434
16.3.3 使用ADO对象检索数据 438
16.4 小结 440
16.5 实践与练习 440
第17章 动态链接库 441
17.1 动态链接库基础 442
17.1.1 动态链接库的特点 442
17.1.2 动态链接库的访问 442
17.1.3 查看动态链接库 443
17.2 创建和使用Win32动态链接库 444
17.2.1 创建动态链接库 444
17.2.2 调用动态链接库 446
17.2.3 向动态链接库中添加C++类和资源 447
17.2.4 访问动态链接库中的C++类和资源 448
17.2.5 使用动态链接库设计多国语言的应用程序 450
17.3 小结 454
17.4 实践与练习 454
第18章 多线程程序设计 455
18.1 线程概述 456
18.1.1 理解系统内核对象 456
18.1.2 理解进程和线程 456
18.2 线程的创建 456
18.2.1 使用CreateThread函数创建线程 457
18.2.2 使用_beginthreadex函数创建线程 458
18.2.3 使用AfxBeginThread函数创建线程 459
18.2.4 应用MFC类库创建线程 461
18.3 线程的挂起、唤醒与终止 464
18.4 线程同步 466
18.4.1 多线程潜在的危险 466
18.4.2 使用事件对象实现线程同步 468
18.4.3 使用信号量对象实现线程同步 470
18.4.4 使用临界区对象实现线程同步 472
18.4.5 使用互斥对象实现线程同步 474
18.5 小结 476
18.6 实践与练习 476
第19章 网络套接字编程 477
19.1 计算机网络基础 478
19.1.1 OSI参考模型 478
19.1.2 IP地址 478
19.1.3 地址解析 479
19.1.4 域名系统 480
19.1.5 TCP/IP协议 480
19.1.6 端口 482
19.2 套接字概述 482
19.2.1 套接字概述 483
19.2.2 网络字节顺序 483
19.2.3 套接字I/O模式 483
19.3 套接字函数 483
19.3.1 套接字函数介绍 483
19.3.2 基于套接字函数的网络聊天系统 488
19.4 MFC套接字编程 494
19.4.1 CAsyncSocket类 494
19.4.2 CSocket类 499
19.4.3 基于TCP协议的网络聊天室系统 500
19.5 小结 505
19.6 实践与练习 505
第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 业务流程图 513
20.3 数据库设计 514
20.3.1 数据库分析 514
20.3.2 创建数据库 515
20.3.3 创建数据表 515
20.4 创建工程 518
20.5 公共类设计 519
20.5.1 自绘菜单类CMyCoolMenu 519
20.5.2 自定义编辑框类CKeyEdit 524
20.5.3 自定义列表视图类CCustomGrid 526
20.6 启动界面的设计 527
20.6.1 启动界面设计 528
20.6.2 启动界面的淡入淡出效果 528
20.7 登录对话框设计 529
20.7.1 登录对话框的界面设计 529
20.7.2 设置按钮显示位图 530
20.7.3 设置按Enter键移动焦点 530
20.7.4 设置“登录”按钮功能 531
20.8 主窗体设计 531
20.8.1 菜单设计 532
20.8.2 工具栏设计 533
20.8.3 主窗体界面设计 534
20.9 “基本信息管理”模块设计 534
20.9.1 “基本信息管理”模块界面设计 535
20.9.2 设置选项卡 535
20.9.3 初始化标签控件 540
20.9.4 设置按钮功能 540
20.10 “库存信息管理”模块设计 541
20.10.1 “库存信息管理”模块界面设计 542
20.10.2 设置选项卡 542
20.11 “查询管理”模块设计 549
20.11.1 “查询管理”模块界面设计 550
20.11.2 设置选项卡 550
20.12 运行项目 555
20.13 开发常见问题与解决 557
20.13.1 书写错误的函数名 557
20.13.2 使用自定义类时导入头文件 557
20.13.3 屏蔽按Enter键关闭窗口功能 558
20.13.4 截获按Enter键后的潜在问题 558
20.13.5 数据添加时字段大小越界 559
20.13.6 如何调用文档/视图结构打印 559
20.14 小结 560