标题：决眦入归鸟：Visual C++开发修行实录
图书信息
编程·望岳
决眦入归鸟：Visual C++开发修行实录  张海新  等编著
ISBN 978-7-121- 13043-4
2011年4月出版
定价：66.00元（含DVD光盘1张）
16开
484 页
宣传语
从基础到实践
从入门到提高
内 容 简 介
C++是当今使用最为频繁的编程语言之一，Visual C++ 6.0是桌面开发的主流工具之一，在开发领域占据着重要的地位。本书循序渐进、由浅入深地详细讲解Visual C++ 6.0开发的核心技术，并通过具体实例的实现过程演绎了各个知识点的具体使用流程。全书分为4篇，共16章。第1～3章是基础篇，介绍Visual C++ 6.0开发所必需具备的基本知识，逐一讲解Visual C++ 6.0印象、修炼C++语法、C++面向对象程序设计等领域的知识；第4～8章是核心技术篇，逐一讲解创建MFC应用程序、对话框与控件、文档与视图、图形图像编程、动态链接库等领域的基本知识；第9～14章是提高篇，逐一讲解ActiveX控件、数据库技术、多线程、网络编程、多媒体编程、注册表编程等领域的知识；第15～16章是综合实战篇，分别通过仿QQ通信工具、专业理财系统项目的实现过程，深入讲解Visual C++ 6.0在日常项目开发中的综合应用流程。全书采用故事性和趣味性相结合的对话讲解方式，并穿插介绍学习技巧和职场生存法则，引领读者全面掌握Visual C++ 6.0。
本书不但适用于Visual C++ 6.0的初学者，也适于有一定Visual C++ 6.0基础的读者，甚至可以作为有一定造诣的程序员的参考书。
前  言
Visual C++的重要性
Visual C++是Microsoft公司推出的一种开发Windows应用程序的高级语言，相比其他的开发语言，如Visual Basic等，具有更为强大的功能和更为高效的执行效率。它提供了程序设计领域中所涉及的多种技术，如文件访问、图形图像处理、网络通信、多媒体和数据处理等，Visual C++几乎可以开发任何一个领域所需要的应用系统。Visual C++以其功能强大、运行速度快，并且对计算机配置要求低而受到广大开发人员的欢迎。
Visual C++是一种可视化的、面对对象和使用事件驱动方式的结构化的高级程序设计语言，可用于开发Windows环境下的各种应用程序。它简单易学、效率高，且功能强大，可以与Windows的专业开发工具SDK相媲美。在Visual C++环境下，利用事件驱动的编程机制、新颖易用的可视化设计工具，使用Windows内部的应用程序接口（API）函数，以及动态链接库（DLL）、动态数据交换（DDE）、对象的链接与嵌入（OLE）、动态数据访问（ADO）等技术，可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
本书架构
本书分为4篇，分别是基础篇、核心技术篇、提高篇和综合实战篇。各篇内容从头开始循序渐进，和读者的成长同步。一般来说，读者学习程序设计语言的过程分为4个阶段：入门阶段、上手阶段、大悟阶段和初级程序员。为了表述得更加直观，下面画图一幅，来展示学习的成长历程。
本书的特色
本书的最大特色是用一问一答的模式穿插知识点，用故事性和趣味性的写法来讲解枯燥的编程知识。本书讲述了一个编程初学者“我”在老师KNOWALL的帮助下顺利掌握开发技术的成长历程。笔者用日记的方式全程记录了他的学习过程，日记和生活密切相关，也和知识点相关，使读者读后有一个豁然开朗的感觉。
（1）以笔者学习经历为主线
从笔者开始学习讲起，一直贯穿整个学习过程。以日记的方式记录下了学习过程中的点点滴滴，趣味和知识并重，情节引人入胜。
（2）每个实例都是精心挑选的典型代表，并附有丰富的技巧提示。
本书遵循理论加实践的写作模式，在每个知识点讲解完毕之后，都会用一个具体实例来演练知识点的用法。所有实例都具有典型性和代表性。
（3）通俗的语言，大话的讲解模式
以最通俗的语言来实现，以大话的方式将知识展现给读者。让读者仿佛是在看一个故事，而不是在学习深奥的语言知识。
（4）用问题串联知识点
为了满足读者的成功感，书中提出了大量的测试和问题，通过这些测试和问题将各个知识点串联起来。这样能让读者在问题中学会知识点的运用，一举两得。
（5）提出问题到解决问题，问题一环扣一环
第1步：每章的开始，我们将提出一个能涵盖本章知识的问题；
第2步：详细讲解需要解决这些问题的基本知识；
第3步：解决这个问题。
（6）给读者以最大实惠——超值DVD光盘（PPT素材和视频）
在配套光盘中有书中实例的源代码、书中项目案例的全程视频讲解和PPT素材，还免费赠送给读者五大综合实例，包括实例的完整源码和视频讲解。
本书内容
第1~3章是基础篇，介绍了Visual C++ 6.0开发所必需具备的基本知识，逐一讲解了Visual C++ 6.0 印象，修炼C++语法，C++面向对象程序设计等领域的知识，并采用理论结合实例的方式对各个知识点进行了剖析。
第1章  Visual C++ 6.0印象
第2章  修炼C++语法
第3章  引入最重要的概念——C++面向对象程序设计
第4~8章是核心技术篇，逐一讲解了创建MFC应用程序，对话框与控件，文档与视图，图形图像编程，动态链接库等领域的基本知识，并采用理论结合实例的方式对各个知识点进行了剖析。
第4章  开始启程——创建MFC应用程序
第5章  对话框与控件是天生一对
第6章  文档与视图是桌面开发的根本
第7章  装饰门面的图形图像编程
第8章  提高效率的动态链接库
第9~14章是提高篇，逐一讲解了ActiveX控件，数据库技术，多线程，网络编程，多媒体编程，注册表编程等领域的知识，并采用理论结合实例的方式对各个知识点进行了剖析。
第9章  ActiveX控件给你额外的收获
第10章  改变软件产业命运的数据库技术
第11章  多线程也能提高效率
第12章  无处不在的网络编程技术
第13章  绚丽人生需要多媒体来点缀
第14章  注册表编程其实很简单
第15~16章是综合实战篇，分别通过仿QQ通信工具，专业理财系统项目的实现过程，讲解了Visual C++ 6.0在日常项目开发中的综合应用流程，并穿插介绍了求职和职场相处的技巧。
第15章  仿QQ通信工具
第16章  专业理财系统
本书的读者对象
初学编程的自学者          编程爱好者
大中专院校的教师和学生      相关培训机构的教师和学员
毕业设计的学生           初中级程序开发人员
程序测试及维护人员          参加实习的初级级程序员
在职程序员                   资深程序员
致谢
本书由张海新编写，参加本书编写的还有薜小龙、管西京、李佐彬、王梦、王书鹏、张子言、张建敏、陈德春、李藏、关立勋、秦雪薇、蒋凯、王东华、罗红仙等人，由于时间仓促以及我们水平有限，有些错误在所难免。如有错误，我们会尽快更正或给予答复。
编者     
2011年3月
目  录
第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篇  核心技术篇
第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篇  提高篇
第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篇  综合实战篇
第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