第1篇 基础篇 1
第1章 Visual C++ 6.0印象 1
1.1 引出问题 1
1.2 Visual C++ 6.0的特点 2
1.3 装备Visual C++ 6.0 2
1.4 遨游Visual C++ 6.0 5
1.4.1 熟悉集成开发环境 5
1.4.2 认识集成开发环境菜单项 7
1.4.3 集成开发环境的工具栏 18
1.4.4 项目与项目工作区 20
1.4.5 强大的编辑器 21
1.5 解决问题 24
1.6 我的总结 25
第2章 修炼C++语法 26
2.1 引出问题 26
2.2 C++来了 26
2.2.1 C++的特点 27
2.2.2 利用Visual C++ 6.0编制C++程序 27
2.2.3 C++程序的基本要素 28
2.3 进进出出的人生 30
2.3.1 先看基本数据类型 31
2.3.2 再看数组 34
2.3.3 学习三种构造类型——结构体、共同体和枚举 37
2.3.4 一个萝卜一个坑的指针 40
2.3.5 基本I/O流 42
2.4 变量的地盘谁做主 45
2.4.1 作用域和生存期 45
2.4.2 作用域限定符 47
2.4.3 存储类型 47
2.5 运算符与表达式 49
2.5.1 算术运算符 50
2.5.2 赋值运算符 50
2.5.3 数据类型转换 51
2.5.4 关系运算符 52
2.5.5 逻辑运算符 53
2.5.6 位运算符 54
2.5.7 ++,--运算符 55
2.5.8 sizeof运算符 56
2.6 控制语句如人生 56
2.6.1 最简单的条件语句 56
2.6.2 复杂的循环语句 59
2.6.3 转移语句 61
2.7 函数是一个武器 63
2.7.1 函数的声明与定义 64
2.7.2 函数的调用 66
2.7.3 引用 66
2.8 编译预处理指令 67
2.8.1 #include文件包含指令 68
2.8.2 #define宏定义指令 68
2.8.3 条件编译指令 68
2.9 解决问题 69
2.10 我的总结 70
第3章 引入最重要的概念——C++面向对象程序设计 71
3.1 引出问题 71
3.2 C++类与对象 72
3.2.1 定义类 72
3.2.2 兄弟连——构造函数和析构函数 74
3.2.3 this指针 76
3.2.4 静态成员 77
3.2.5 最简单的友元 79
3.3 类可以继承 80
3.3.1 基类与派生类 81
3.3.2 派生类的构造函数与析构函数 83
3.3.3 虚基类 85
3.4 多态展示变形 89
3.4.1 虚函数 90
3.4.2 虚析构函数 91
3.4.3 抽象类与纯虚函数 92
3.5 再来一次 94
3.5.1 函数重载 94
3.5.2 运算符重载 96
3.6 解决问题 97
3.7 我的总结 97
第2篇 核心技术篇 99
第4章 开始启程——创建MFC应用程序 99
4.1 引出问题 99
4.2 应用程序向导 100
4.2.1 MFC应用程序开发流程 100
4.2.2 谈应用程序向导生成的文件 104
4.3 Class Wizard秘籍 116
4.3.1 初识Class Wizard 116
4.3.2 添加类 120
4.3.3 添加类成员变量 121
4.3.4 添加消息响应函数 122
4.3.5 覆盖虚拟函数 124
4.4 程序需要调试来检验 125
4.4.1 查找源程序的语法错误 126
4.4.2 可以一点点调试的Debug 127
4.5 解决问题 128
4.6 我的总结 129
第5章 对话框与控件是天生一对 130
5.1 引出问题 130
5.2 何谓对话框 130
5.2.1 基于对话框的应用程序 131
5.2.2 对话框类CDialog 131
5.2.3 对话框数据交换与验证 132
5.3 使用对话框 134
5.3.1 第一步:创建对话框 134
5.3.2 第二步:编辑对话框 134
5.3.3 第三步:体验对话框编程 135
5.4 公用对话框和消息对话框 137
5.4.1 先看公用对话框 138
5.4.2 再看消息对话框 143
5.5 标准控件 145
5.5.1 Windows标准控件概述 146
5.5.2 不能发送消息的静态控件 147
5.5.3 编辑框控件 149
5.5.4 按钮 153
5.5.5 列表框 158
5.5.6 组合框 163
5.5.7 滚动条 167
5.6 公共即共有 170
5.6.1 标签控件与属性表 170
5.6.2 图像列表 172
5.6.3 列表视图控件 174
5.6.4 树视图控件 174
5.7 解决问题 183
5.8 我的总结 184
第6章 文档与视图是桌面开发的根本 186
6.1 引出问题 186
6.2 剖析文档与视图结构 186
6.2.1 文档与视图结构概述 187
6.2.2 文档与视图之间的相互作用 187
6.2.3 多文档 188
6.2.4 创建单文档应用程序 189
6.3 设计菜单 190
6.3.1 建立菜单资源 191
6.3.2 添加菜单命令处理函数 191
6.3.3 弹出式菜单 193
6.4 鼠标响应处理 194
6.4.1 鼠标消息 195
6.4.2 添加鼠标消息响应函数 195
6.5 工具栏和状态栏设计 197
6.5.1 定制工具栏 197
6.5.2 定制状态栏 199
6.6 对文档进行读写 201
6.6.1 时髦的序列化工作 202
6.6.2 MFC应用程序的序列化 203
6.7 你可以使用不同视图 204
6.7.1 滚动视图 205
6.7.2 多视图 208
6.8 解决问题 214
6.9 我的总结 217
第7章 装饰门面的图形图像编程 218
7.1 引出问题 218
7.2 神秘的图形设备接口 219
7.2.1 了解这个接口 219
7.2.2 看设备环境 219
7.2.3 GDI坐标系和映射模式 221
7.2.4 颜色和颜色设置 222
7.3 绘制图形 222
7.3.1 GDI对象 223
7.3.2 创建和使用画笔 223
7.3.3 创建和使用画刷 225
7.3.4 绘制基本图形 227
7.4 文本与字体 228
7.4.1 什么是字体 229
7.4.2 创建字体 230
7.4.3 字体对话框 231
7.4.4 绘制文本 233
7.5 位图、图标和光标 233
7.5.1 位图 234
7.5.2 图标 242
7.5.3 光标 243
7.6 读/写、显示图像文件 245
7.6.1 剖析BMP图像文件 246
7.6.2 读/写BMP图像文件 248
7.6.3 显示BMP图像 251
7.7 解决问题 256
7.8 我的总结 257
第8章 提高效率的动态链接库 258
8.1 引出问题 258
8.2 何谓动态链接库 258
8.3 动态链接库的创建及调用 261
8.3.1 知道非MFC动态库吗 261
8.3.2 常规动态库 262
8.3.3 扩展动态库 266
8.4 解决问题 268
8.5 我的总结 269
第3篇 提高篇 271
第9章 ActiveX控件给你额外的收获 271
9.1 引出问题 271
9.2 组件与ActiveX控件 272
9.3 创建ActiveX控件 274
9.3.1 使用MFC创建ActiveX控件 274
9.3.2 测试ActiveX控件 275
9.3.3 添加事件 276
9.3.4 添加属性 279
9.4 调用ActiveX控件 283
9.4.1 MFC应用程序调用ActiveX控件 284
9.4.2 Web页面调用ActiveX控件 285
9.5 解决问题——业余时间的兼职 285
9.6 我的总结 286
第10章 改变软件产业命运的数据库技术 287
10.1 引出问题 287
10.2 Windows数据库解决方案 287
10.2.1 常见的三种数据库管理系统 288
10.2.2 常见的数据库访问接口 289
10.2.3 数据库操作语言SQL 292
10.3 ADO访问技术 293
10.3.1 ADO数据库访问模型 294
10.3.2 ADO数据库访问步骤 296
10.3.3 使用ADO访问Access数据库 297
10.4 ODBC访问技术 302
10.4.1 MFC ODBC数据库访问类 302
10.4.2 MFC ODBC数据库访问技术 306
10.4.3 DBGrid控件的使用 315
10.5 解决问题 317
10.6 我的总结 318
第11章 多线程也能提高效率 319
11.1 引出问题 319
11.2 认识多线程 319
11.2.1 线程与进程 320
11.2.2 线程优先级 320
11.2.3 线程同步 320
11.3 Win 32 API多线程编程 321
11.3.1 编写线程函数 321
11.3.2 创建一个线程 321
11.3.3 终止线程 323
11.3.4 设置线程优先级 325
11.3.5 线程的挂起与恢复 325
11.3.6 侃侃线程同步 326
11.4 开始多线程编程 327
11.4.1 工作线程的创建与使用 328
11.4.2 创建与使用用户界面线程 328
11.4.3 线程同步 330
11.4.4 线程通信 336
11.5 解决问题 338
11.6 我的总结 339
第12章 无处不在的网络编程技术 341
12.1 引出问题 341
12.2 认识Windows Socket 341
12.2.1 分析网络通信基本流程 342
12.2.2 搭建开发环境 342
12.2.3 几种常用的数据结构 342
12.2.4 需要了解的2个概念 343
12.3 流式套接字很重要 343
12.3.1 流式套接字编程模型 344
12.3.2 利用流式套接字传输数据文件 348
12.4 数据报套接字编程 353
12.4.1 数据报套接字编程模型 353
12.4.2 传输消息 355
12.5 实现局域网内IP多播 356
12.5.1 很难理解的IP多播 356
12.5.2 教你如何实现多播通信 358
12.6 利用MFC进行套接字编程 359
12.6.1 CAsyncSocket和CSocket组合 359
12.6.2 利用CSocket类实现一个局域网通信软件 360
12.7 WinInet类 364
12.7.1 MFC的WinInet类 364
12.7.2 利用WinInet类编写互联网客户端程序 365
12.8 解决问题 369
12.9 我的总结 372
第13章 绚丽人生需要多媒体来点缀 373
13.1 引出问题 373
13.2 厉害的控制接口 374
13.2.1 常见的几种多媒体类型 374
13.2.2 最基本的媒体控制接口(MCI) 375
13.2.3 MCIWnd窗口类 377
13.3 使用MFC控件实现多媒体编程 381
13.4 OpenGL三维程序设计 385
13.4.1 OpenGL初步 386
13.4.2 OpenGL三维程序设计的具体步骤 388
13.5 解决问题——如何抓取播放的视频图片 393
13.6 我的总结 394
第14章 注册表编程其实很简单 395
14.1 引出问题 395
14.2 Windows注册表印象 396
14.3 常用的几个函数 397
14.3.1 创建键函数RegCreateKeyEx 397
14.3.2 打开键函数RegOpenKeyEx 400
14.3.3 读取键值函数RegQueryValueEx 400
14.3.4 设置键值函数RegSetValueEx 401
14.4 解决问题 403
14.5 我的总结 404
第4篇 综合实战篇 405
第15章 仿QQ通信工具 405
15.1 老师的作业 405
15.1.1 需求分析 405
15.1.2 总体设计 406
15.1.3 文件概述 408
15.2 服务器端编码 409
15.2.1 设计服务器界面 409
15.2.2 用户信息管理模块 409
15.2.3 客户端请求信息处理 412
15.2.4 系统群消息发送功能 417
15.3 客户端编码 417
15.3.1 客户端界面设计 417
15.3.2 基本信息与消息设计 419
15.3.3 线程函数的设计与实现 420
15.3.4 与服务器端的交互功能 424
15.3.5 客户端之间的交互 427
15.4 系统调试 433
15.5 我的总结 434
第16章 专业理财系统 435
16.1 求职路上 435
16.2 系统分析 437
16.2.1 需求分析 437
16.2.2 可行性分析 438
16.3 系统设计 438
16.3.1 系统目标 438
16.3.2 系统模块结构 439
16.4 设计数据结构 440
16.4.1 设计数据库 440
16.4.2 设计系统框架 441
16.5 前期编码 445
16.5.1 用户管理模块 446
16.5.2 收支信息模块 452
16.6 后期编码 461
16.6.1 设计界面 461
16.6.2 编码实现 462
16.7 项目调试 465
16.8 总结 467