第1篇 基础知识 2
第1章 Visual C++ 6.0集成开发环境 2
1.1 Visual C++ 6.0概述 3
1.2 Visual C++ 6.0开发环境介绍 3
1.2.1 熟悉Visual C++ 6.0 IDE开发环境 3
1.2.2 Visual C++ 6.0 IDE菜单介绍 4
1.2.3 Visual C++ 6.0 IDE工具栏介绍 10
1.2.4 Visual C++ 6.0工作区窗口介绍 12
1.2.5 Visual C++ 6.0控件面板介绍 14
1.2.6 Visual C++ 6.0输出窗口介绍 14
1.3 设置自己的开发环境 15
1.3.1 自定义工具栏 15
1.3.2 自定义代码编辑窗口 16
1.4 创建一个简单的程序 18
1.4.1 创建工程 18
1.4.2 编辑程序 20
1.5 小结 21
第2章 C++语言基础 22
2.1 C++文件结构 23
2.1.1 头文件的构成 23
2.1.2 源文件的构成 23
2.2 C++语言基本要素 24
2.2.1 标识符 24
2.2.2 关键字 24
2.2.3 常量 25
2.2.4 变量 25
2.2.5 变量的存储类型 26
2.3 数据类型 28
2.3.1 数值类型 28
2.3.2 字符类型 29
2.3.3 数组类型 30
2.3.4 布尔类型 32
2.3.5 枚举类型 32
2.3.6 结构体类型 33
2.3.7 共用体类型 36
2.3.8 指针类型 37
2.3.9 引用类型 40
2.3.10 自定义类型 41
2.4 运算符 42
2.4.1 赋值运算符 42
2.4.2 算术运算符 43
2.4.3 关系运算符 44
2.4.4 逻辑运算符 45
2.4.5 自增自减运算符 46
2.4.6 位运算符 48
2.4.7 sizeof运算符 51
2.4.8 new和delete运算符 52
2.4.9 结合性与优先级 53
2.5 表达式 54
2.5.1 逗号表达式 55
2.5.2 三目元表达式 55
2.6 程序编码规范 56
2.6.1 合理使用注释 56
2.6.2 统一代码缩进 58
2.6.3 代码换行 59
2.6.4 合理使用空格 59
2.6.5 命名规则 60
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语句 75
3.4.4 嵌套循环语句 75
3.5 跳转语句 76
3.5.1 goto语句 76
3.5.2 return语句 78
3.5.3 exit语句 79
3.6 小结 79
3.7 实践与练习 80
第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 实践与练习 110
第5章 面向对象程序设计 111
5.1 类和对象 112
5.1.1 类的定义 112
5.1.2 类成员的访问 114
5.1.3 构造函数和析构函数 116
5.1.4 内联成员函数 122
5.1.5 静态类成员 124
5.1.6 隐藏的this指针 127
5.1.7 运算符重载 128
5.1.8 友元类和友元方法 132
5.1.9 类的继承 135
5.1.10 类域 146
5.1.11 嵌套类 147
5.1.12 局部类 149
5.2 类模板 150
5.2.1 类模板的定义及应用 150
5.2.2 定义类模板的静态数据成员 155
5.3 异常处理 156
5.3.1 异常捕捉语句 156
5.3.2 抛出异常 158
5.4 小结 159
5.5 实践与练习 160
第2篇 核心技术 162
第6章 对话框应用程序设计 162
6.1 构建应用程序 163
6.1.1 构建对话框应用程序 163
6.1.2 构建单文档/视图应用程序 163
6.1.3 构建多文档/视图应用程序 166
6.2 对话框的创建及显示 166
6.2.1 创建对话框 167
6.2.2 显示对话框 167
6.3 对话框属性设置 169
6.3.1 设置对话框的标题 169
6.3.2 设置对话框的边框风格 170
6.3.3 使用对话框关联菜单 170
6.3.4 设置对话框字体 171
6.4 在对话框中操作控件 171
6.4.1 在对话框中使用控件 171
6.4.2 控件对齐方式 172
6.4.3 为控件关联变量 174
6.5 添加对话框成员及成员函数 175
6.5.1 添加普通成员及成员函数 175
6.5.2 添加消息处理函数 176
6.5.3 手动添加命令消息处理函数 177
6.6 消息对话框 177
6.7 Windows通用对话框 179
6.7.1 使用“文件”对话框打开和保存文件 179
6.7.2 使用“字体”对话框设置文本字体 182
6.7.3 使用“颜色”对话框设置文本背景颜色 183
6.7.4 使用“查找/替换”对话框在文本中替换字符串 185
6.7.5 使用“打印”对话框进行打印 188
6.7.6 使用“浏览文件夹”对话框选择文件夹 190
6.8 小结 191
6.9 实践与练习 191
第7章 常用控件 192
7.1 静态文本控件 193
7.1.1 设置显示文本 193
7.1.2 设置文本颜色 193
7.1.3 模拟按钮控件的单击事件 194
7.2 编辑框控件 194
7.2.1 设置密码编辑框 195
7.2.2 设置只读编辑框 195
7.2.3 设置编辑框多行显示 195
7.2.4 设置编辑框按Enter键换行 196
7.2.5 使用编辑框控件录入数据 196
7.3 图像控件 196
7.3.1 通过属性显示位图 197
7.3.2 设置边框颜色和填充颜色 197
7.3.3 居中显示位图资源 197
7.4 按钮控件 198
7.4.1 使用按钮控件显示图标 198
7.4.2 使用按钮控件处理用户操作 199
7.5 复选框控件 199
7.5.1 设置复选框控件的选中状态 199
7.5.2 使用复选框控件统计信息 200
7.6 单选按钮控件 201
7.6.1 为单选按钮控件分组 202
7.6.2 获得被选择的单选按钮的文本 202
7.7 组合框控件 203
7.7.1 设置控件风格 203
7.7.2 调整列表部分的显示大小 203
7.7.3 通过属性插入数据 204
7.7.4 调整数据显示顺序 204
7.7.5 获得选择的数据 205
7.8 列表框控件 206
7.8.1 在指定位置插入文本 206
7.8.2 避免插入重复数据 207
7.8.3 实现复选数据功能 208
7.9 进度条控件 209
7.9.1 设置显示风格 210
7.9.2 设置进度条的范围 210
7.10 小结 210
7.11 实践与练习 210
第8章 菜单 212
8.1 菜单资源设计 213
8.2 菜单项的命令处理 215
8.3 动态创建菜单 216
8.4 创建弹出式菜单 218
8.5 创建图标菜单 220
8.6 小结 226
8.7 实践与练习 226
第9章 工具栏和状态栏 227
9.1 工具栏设计 228
9.1.1 工具栏资源设计 228
9.1.2 工具栏的命令处理 229
9.1.3 动态创建工具栏 230
9.1.4 设置工具栏按钮提示 234
9.1.5 设计XP风格工具栏 237
9.2 状态栏设计 239
9.2.1 创建状态栏 239
9.2.2 在状态栏中显示控件 241
9.3 小结 243
9.4 实践与练习 243
第10章 高级控件 244
10.1 图像列表控件 245
10.1.1 创建图像列表 245
10.1.2 将图像绘制到程序中 246
10.2 列表视图控件 247
10.2.1 设置显示风格 247
10.2.2 设计登录窗口 248
10.2.3 将数据加载到列表 249
10.2.4 具有位图背景的控件 252
10.2.5 动态创建列表视图控件 254
10.3 树控件 255
10.3.1 动态创建树控件 255
10.3.2 带复选功能的树控件 258
10.3.3 可编辑节点的树控件 261
10.4 标签控件 263
10.4.1 设置显示方式 263
10.4.2 图标标签控件 263
10.4.3 设计程序模块 265
10.5 应用工具提示控件 267
10.6 小结 270
10.7 实践与练习 270
第11章 自定义MFC控件 271
11.1 自定义编辑框控件 272
11.1.1 数字编辑框 272
11.1.2 特殊文本颜色编辑框 273
11.1.3 位图背景编辑框 275
11.2 自定义按钮控件 276
11.2.1 图标按钮 277
11.2.2 热点按钮 280
11.2.3 圆形按钮 284
11.3 位图背景树控件 286
11.4 三态效果复选框控件 288
11.5 小结 291
11.6 实践与练习 291
第12章 文本、图形、图像处理 292
12.1 GDI概述 293
12.1.1 设备上下文 293
12.1.2 GDI对象 294
12.2 文本输出 295
12.2.1 在具体位置和区域中输出文本 295
12.2.2 利用制表位控制文本输出 297
12.2.3 设置字体及文本颜色 298
12.2.4 在路径中输出文本 300
12.2.5 在图像背景上输出透明文本 301
12.3 绘制图形 303
12.3.1 利用线条绘制多边形 303
12.3.2 直接绘制多边形 305
12.3.3 绘制控件外观 307
12.3.4 填充图形区域 308
12.4 图像显示 310
12.4.1 在设备上下文中绘制图像 310
12.4.2 从磁盘中加载图像到窗口中 313
12.4.3 位图文件分析 314
12.4.4 根据位图数据直接绘图 316
12.4.5 显示JPEG图像 318
12.5 GDI+图像编程 320
12.5.1 在Visual C++ 6.0中使用GDI+ 320
12.5.2 利用GDI+实现图像类型转换 321
12.5.3 使用GDI+显示GIF图像 324
12.6 小结 327
12.7 实践与练习 327
第13章 文档与视图 328
13.1 构建文档/视图应用程序 329
13.1.1 文档/视图结构概述 329
13.1.2 创建文档/视图结构应用程序 329
13.2 文档/视图结构的创建 330
13.2.1 文档模板的创建 330
13.2.2 文档的创建 332
13.2.3 框架与视图的创建 335
13.3 文档模板概述 338
13.3.1 文档管理器 339
13.3.2 文档模板 342
13.4 文档对象 343
13.4.1 文档对象的主要方法 343
13.4.2 文档的初始化 345
13.4.3 保存文档 346
13.4.4 文档的命令处理 346
13.4.5 文档的销毁 348
13.5 视图对象 351
13.5.1 视图对象的主要方法 351
13.5.2 视图的初始化 353
13.5.3 视图的绘制 353
13.5.4 视图的销毁 354
13.6 框架窗口 357
13.6.1 框架对象的主要方法 357
13.6.2 框架的初始化 358
13.6.3 命令消息处理 359
13.7 文档/视图的应用 360
13.7.1 实例说明 361
13.7.2 实例实现 361
13.8 术语 365
13.9 小结 365
13.10 实践与练习 365
第3篇 高级应用 368
第14章 打印技术 368
14.1 打印基础 369
14.1.1 映射模式 369
14.1.2 获取打印机设备上下文 369
14.2 文档/视图应用程序打印 370
14.3 对话框应用程序打印 372
14.3.1 打印对话框中的表格 372
14.3.2 打印磁盘中的文件 374
14.4 打印设置 376
14.4.1 设置打印方向 376
14.4.2 设置打印页面 379
14.5 修改打印预览 382
14.6 小结 385
14.7 实践与练习 385
第15章 文件与注册表操作 386
15.1 普通文件操作 387
15.1.1 应用C函数进行文件操作 387
15.1.2 使用CFile类进行文件操作 390
15.1.3 使用CFileFind类进行文件查找 395
15.2 串行化 398
15.2.1 串行化基础 399
15.2.2 编写串行化类 401
15.3 INI文件操作 403
15.3.1 INI文件基本结构 403
15.3.2 读写INI文件 404
15.4 注册表操作 407
15.4.1 使用API函数操作注册表 407
15.4.2 基于CRegKey类操作注册表 412
15.5 小结 415
15.6 实践与练习 415
第16章 ADO编程 416
16.1 ADO编程基础 417
16.1.1 ADO概述 417
16.1.2 在Visual C++中应用ADO技术 417
16.2 ADO对象 417
16.2.1 ADO连接对象 418
16.2.2 ADO记录集对象 420
16.2.3 ADO命令对象 424
16.2.4 ADO参数对象 425
16.3 ADO对象应用 427
16.3.1 封装ADO对象 427
16.3.2 使用ADO对象添加、修改、删除数据 429
16.3.3 使用ADO对象检索数据 433
16.4 小结 435
16.5 实践与练习 435
第17章 动态链接库 436
17.1 动态链接库基础 437
17.1.1 动态链接库的特点 437
17.1.2 动态链接库的访问 437
17.1.3 查看动态链接库 438
17.2 创建和使用Win32动态链接库 439
17.2.1 创建动态链接库 439
17.2.2 调用动态链接库 441
17.2.3 向动态链接库中添加C++类和资源 442
17.2.4 访问动态链接库中的C++类和资源 443
17.2.5 使用动态链接库设计多国语言的应用程序 445
17.3 小结 449
17.4 实践与练习 449
第18章 多线程程序设计 450
18.1 线程概述 451
18.1.1 理解系统内核对象 451
18.1.2 理解进程和线程 451
18.2 线程的创建 451
18.2.1 使用CreateThread函数创建线程 452
18.2.2 使用_beginthreadex函数创建线程 453
18.2.3 使用AfxBeginThread函数创建线程 454
18.2.4 应用MFC类库创建线程 456
18.3 线程的挂起、唤醒与终止 459
18.4 线程同步 461
18.4.1 多线程潜在的危险 461
18.4.2 使用事件对象实现线程同步 463
18.4.3 使用信号量对象实现线程同步 466
18.4.4 使用临界区对象实现线程同步 467
18.4.5 使用互斥对象实现线程同步 470
18.5 小结 472
18.6 实践与练习 472
第19章 网络套接字编程 473
19.1 计算机网络基础 474
19.1.1 OSI参考模型 474
19.1.2 IP地址 474
19.1.3 地址解析 475
19.1.4 域名系统 476
19.1.5 TCP/IP协议 476
19.1.6 端口 478
19.2 套接字概述 478
19.2.1 套接字概述 479
19.2.2 网络字节顺序 479
19.2.3 套接字I/O模式 479
19.3 套接字函数 479
19.3.1 套接字函数介绍 479
19.3.2 基于套接字函数的网络聊天系统 484
19.4 MFC套接字编程 490
19.4.1 CAsyncSocket类 490
19.4.2 CSocket类 495
19.4.3 基于TCP协议的网络聊天室系统 496
19.5 小结 501
19.6 实践与练习 501
第4篇 项目实战 504
第20章 图书管理系统 504
20.1 系统分析 505
20.1.1 需求分析 505
20.1.2 可行性分析 505
20.1.3 编写项目计划书 506
20.2 系统设计 508
20.2.1 系统目标 508
20.2.2 系统功能结构 508
20.2.3 业务流程图 508
20.3 数据库设计 509
20.3.1 数据库分析 509
20.3.2 创建数据库 510
20.3.3 创建数据表 510
20.4 创建工程 513
20.5 公共类设计 514
20.5.1 自绘菜单类CMyCoolMenu 514
20.5.2 自定义编辑框类CKeyEdit 519
20.5.3 自定义列表视图类CCustomGrid 521
20.6 启动界面的设计 522
20.6.1 启动界面设计 523
20.6.2 启动界面的淡入淡出效果 523
20.7 登录对话框设计 524
20.7.1 登录对话框的界面设计 524
20.7.2 设置按钮显示位图 525
20.7.3 设置按Enter键移动焦点 525
20.7.4 设置“登录”按钮功能 526
20.8 主窗体设计 526
20.8.1 菜单设计 527
20.8.2 工具栏设计 528
20.8.3 主窗体界面设计 529
20.9 “基本信息管理”模块设计 529
20.9.1 “基本信息管理”模块界面设计 530
20.9.2 设置选项卡 530
20.9.3 初始化标签控件 535
20.9.4 设置按钮功能 535
20.10 “库存信息管理”模块设计 536
20.10.1 “库存信息管理”模块界面设计 537
20.10.2 设置选项卡 537
20.11 “查询管理”模块设计 544
20.11.1 “查询管理”模块界面设计 545
20.11.2 设置选项卡 545
20.12 运行项目 550
20.13 开发常见问题与解决 552
20.13.1 书写错误的函数名 552
20.13.2 使用自定义类时导入头文件 552
20.13.3 屏蔽按Enter键关闭窗口功能 553
20.13.4 截获按Enter键后的潜在问题 553
20.13.5 添加数据时字段大小越界 554
20.13.6 如何调用文档/视图结构打印 554
20.14 小结 555