标题：Visual C++典型模块与项目实战大全
基本信息
作者： 周华清    李为民    张昌龙  [1]出版社：清华大学出版社 
ISBN：9787302255864
上架时间：2011-11-15
出版日期：2011 年11月
开本：16开
页码：1
版次：1-1
编辑推荐
融汇监控、音频、视频、线程、钩子、串口等多种热门技术
精选13个典型模块和3个项目案例，实战Visual C++应用开发
计划在51CTO等专业技术网站的读书频道宣传；
计划在互动、当当、卓越等网络书店宣传； 
内容简介
《visual c++典型模块与项目实战大全》以实战开发为原则，以visual c++ 6.0（简称vc++ 6.0）集成开发环境为主框架，以模块应用及项目开发为主线，通过visual c++开发中最常见的13个典型模块和3个完整的项目案例，详细介绍线程、消息、ftp技术、串口通信、网络通信、gdi、gdi+、directshow、opencv等热门技术以及vc+odbc+sql、vc+ado+acess等主流框架的整合使用。
《visual c++典型模块与项目实战大全》附带1张dvd光盘，内容为作者为本书录制的全程多媒体语音教学视频及本书所涉及的源代码。《visual c++典型模块与项目实战大全》共18章，分为3篇。涵盖的主要内容有桌面时钟、电子邮件收发管理器、系统资源管理器、系统任务管理工具、ftp客户端程序、音乐播放器、视频播放器、局域网聊天工具、截屏工具、扫雷游戏、串口调试器、打印工具、监控技术、人事管理系统、电子相册及超市管理系统。
《visual c++典型模块与项目实战大全》内容丰富，实例典型，实用性强，适合各个层次想要学习visual c++开发技术的人员阅读，尤其适合有一定visual c++编程基础，要提高编程技术的开发人员阅读。 
作译者
本书提供作译者介绍
戴晟晖 毕业于东华理工大学。有8年的大型行业软件系统开发经验和5年的Visual C++教学经验。擅长Visual C++环境的各种开发技术，尤其熟悉MFC编程，对TCP/IP网络协议、嵌入式系统和数据库技术有深入的研究。现任职于东华理工大学，主导开发了云南省山区公路水毁预警信息管理系统等多个大中型项目。
杨国祥 毕业于计算机科学与技术专业，获得工学学士学位。从事Visual C++项目开发6年。熟悉Visual C++开发环境，擅长图形图像、网络通信、数据库及嵌入式等开发。编写并出版了《C/C++程序员面试指南》.. 
目录
《visual c++典型模块与项目实战大全》 
第1篇 visual c++项目开发基础 
第1章 vc++ 6.0程序设计简介 2 
教学视频：11分钟 
1.1 visual c++ 6.0集成开发环境 2 
1.1.1 vc++ 6.0集成开发环境菜单栏及工具栏简介 3 
1.1.2 vc++ 6.0集成开发环境工作区简介 3 
1.2 visual c++ 6.0的“hello world！” 4 
1.2.1 vc++ 6.0可创建的工程简介 5 
1.2.2 创建基于win32 console application的“hello world!” 6 
1.2.3 创建基于mfc app wizard（exe）的“hello world!” 7 
1.3 vc++集成开发环境使用技巧 8 
1.3.1 快速定位 8 
1.3.2 快速格式化一段源代码 9 
1.3.3 从工程中彻底删除一个类 10 
1.3.4 在vc++中设置头文件和库文件 10 
1.3.5 在工作区导入多个项目 10 
1.4 vc++集成开发环境常见问题及解决方法 11 
1.4.1 工程文件简介 11 
1.4.2 常见问题及解决方法 12 
.1.5 小结 13 
第2章 c++编程基础 14 
教学视频：25分钟 
2.1 变量 14 
2.1.1 标识 14 
2.1.2 基本数据类型 15 
2.1.3 变量的声明 16 
2.2 操作、运算符 16 
2.2.1 赋值运算 16 
2.2.2 算术运算 17 
2.2.3 逻辑运算 18 
2.2.4 关系运算 19 
2.2.5 位操作运算 19 
2.2.6 条件操作运算 20 
2.2.7 其他操作运算 20 
2.2.8 运算符优先级 22 
2.3 控制结构 22 
2.3.1 条件控制结构 23 
2.3.2 循环控制结构 23 
2.3.3 选择控制结构 25 
2.3.4 分支跳转控制结构 25 
2.4 函数 26 
2.5 类 26 
2.5.1 类的成员变量和成员函数 27 
2.5.2 类的继承 28 
2.6 小结 29 
第2篇 典型模块开发 
第3章 桌面时钟（gdi实现） 32 
教学视频：64分钟 
3.1 桌面时钟界面简介 32 
3.2 桌面时钟的功能简介 33 
3.2.1 桌面时钟界面控制功能简介 33 
3.2.2 桌面时钟时间设置功能简介 36 
3.3 控件知识 37 
3.4 实现桌面时钟的关键技术 39 
3.4.1 gdi基础知识简介 39 
3.4.2 gdi编程基础简介 40 
3.5 gdi的基础类 40 
3.5.1 cdc类 40 
3.5.2 画笔类（线色类） 41 
3.5.3 画刷类（面色类） 43 
3.5.4 字体类 45 
3.5.5 点类 46 
3.5.6 大小类 47 
3.5.7 矩形类 47 
3.6 gdi绘制像素点的实际应用 49 
3.7 gdi绘制线条的实际应用 50 
3.7.1 gdi绘制直线的函数 50 
3.7.2 用画笔绘制线的步骤 52 
3.7.3 绘制线条的示例 53 
3.8 gdi绘制填充图的实际应用 58 
3.8.1 矩形填充图 58 
3.8.2 扇形填充图 59 
3.8.3 填充拖动矩形 60 
3.8.4 填充区域 63 
3.9 gdi输出字体的实际应用 65 
3.10 表盘模块的设计与实现 66 
3.10.1 表盘设置模块 66 
3.10.2 表盘的绘制模块 68 
3.11 表针模块的设计与实现 73 
3.11.1 表针设置模块 73 
3.11.2 表针绘制模块 75 
3.12 数字时钟模块的设计与实现 77 
3.12.1 数字时钟设置模块 77 
3.12.2 数字时钟绘制模块 79 
3.13 数字日期模块的设计与实现 82 
3.14 背景模块的设计与实现 86 
3.15 闹铃模块的设计与实现 87 
3.15.1 蜂鸣器音乐选择及播放模块 88 
3.15.2 闹铃设置主模块 89 
3.16 系统时间设置模块的设计与实现 91 
3.17 主界面模块的设计与实现 92 
3.17.1 主窗体界面模块的设计与实现 92 
3.17.2 主窗体功能模块的设计与实现 94 
3.17.3 主窗体控制模块的设计与实现 97 
3.18 小结 102 
第4章 电子邮件收发管理器（jmail+自定义按钮） 103 
教学视频：58分钟 
4.1 电子邮件收发管理器简介 103 
4.1.1 主程序简介 103 
4.1.2 邮箱设置信息功能简介 104 
4.1.3 收件箱功能简介 104 
4.1.4 发件箱功能简介 105 
4.1.5 资源管理器技术简介 106 
4.2 自定义的按钮控件 107 
4.2.1 定义一个新类继承于cbutton 107 
4.2.2 定制按钮的背景图像 108 
4.2.3 为按钮添加声音 115 
4.2.4 重载鼠标事件 117 
4.3 定制具有个性背景图像的对话框 120 
4.4 实现电子邮件收发管理器的关键技术 122 
4.4.1 jmail的基础知识 122 
4.4.2 接收邮件 123 
4.4.3 发送邮件 124 
4.5 电子邮件收发管理器的实现 126 
4.5.1 主窗体的设计与实现 126 
4.5.2 设置模块的设计与实现 130 
4.5.3 收件箱模块的设计与实现 130 
4.5.4 写邮件模块的设计与实现 135 
4.6 小结 138 
第5章 系统资源管理器（文件操作+文件检索+多线程） 139 
教学视频：32分钟 
5.1 系统资源管理器简介 139 
5.1.1 树形结构浏览系统文件资源 139 
5.1.2 列表视图显示指定目录下的文件资源 139 
5.1.3 搜索文件 140 
5.1.4 资源管理器的技术简介 140 
5.2 树形视图控件 141 
5.2.1 建立树形视图控件工程 141 
5.2.2 为树形视图添加名为“根节点”的节点 141 
5.2.3 为树形视图插入多层节点 142 
5.2.4 为树形视图添加图像列表 143 
5.2.5 设置树形视图的显示风格 144 
5.2.6 为树形视图添加项目选中处理函数 145 
5.2.7 为树形视图添加项目展开处理函数 146 
5.3 列表型视图控件 147 
5.3.1 创建一个列表视图工程 147 
5.3.2 为列表型视图添加图像列表 147 
5.3.3 为列表型视图添加新项目 148 
5.3.4 为列表型视图添加项目双击事件 148 
5.4 windows文件系统的基础知识 149 
5.5 shell命名空间中对象的标识方法 150 
5.5.1 文件标识简介 150 
5.5.2 什么是文件标识列表 150 
5.5.3 什么是文件标识列表指针 150 
5.5.4 文件标识列表指针的常用处理函数 151 
5.6 通过shell接口遍历系统文件和文件夹 153 
5.6.1 ishellfolder接口的主要方法 153 
5.6.2 ienumidlist接口的主要方法 154 
5.6.3 遍历文件系统的步骤 155 
5.7 系统资源管理器的实现过程简介 155 
5.8 主框架模块的设计实现 156 
5.8.1 为主框架订制工具栏 156 
5.8.2 分割视图区 156 
5.9 树形视图显示文件系统 157 
5.9.1 初始化树形控件 157 
5.9.2 实现获取itemidlist文件名称的功能 158 
5.9.3 实现填充树形控件的功能 160 
5.9.4 实现展开树形控件节点的功能 162 
5.9.5 实现树形控件节点切换的功能 163 
5.9.6 实现获取文件的系统图标 164 
5.10 列表视图显示系统文件 165 
5.10.1 初始化列表视图 165 
5.10.2 实现树形视图项目添加的功能 165 
5.10.3 执行鼠标双击对象 168 
5.11 路径的前进、后退与向上操作的实现 170 
5.11.1 路径的前进、后退操作的实现 171 
5.11.2 路径的向上操作 174 
5.12 文件查找模块的实现 174 
5.12.1 添加并实现文件查找类 174 
5.12.2 文件查找界面设计与实现 178 
5.12.3 文件查找控件属性 179 
5.12.4 实现文件查找功能 179 
5.13 小结 183 
第6章 系统任务管理工具（系统监控+系统进程） 184 
教学视频：23分钟 
6.1 任务管理器简介 184 
6.1.1 应用程序管理模块 184 
6.1.2 进程管理模块 184 
6.1.3 性能监测模块 185 
6.1.4 任务管理器的技术简介 185 
6.2 控件知识 186 
6.2.1 tab控件的使用 186 
6.2.2 list控件用作report 187 
6.3 实现系统任务管理的关键技术 187 
6.3.1 如何获取应用程序信息 187 
6.3.2 如何获取系统进程信息 188 
6.3.3 如何启动、停止进程 189 
6.3.4 如何获取内存信息 190 
6.3.5 如何获取cpu信息 190 
6.4 主框架模块的设计实现 193 
6.4.1 设计主窗体菜单栏 193 
6.4.2 文件菜单功能实现 194 
6.4.3 关机菜单功能实现 194 
6.4.4 实现tab控件的功能 196 
6.5 应用程序监控模块的实现 198 
6.5.1 添加并设置列表控件 198 
6.5.2 检测系统启动的应用程序 198 
6.5.3 实现应用程序实时监测功能 200 
6.5.4 实现应用程序的控制功能 200 
6.6 进程监控模块的实现 202 
6.6.1 添加并设置列表控件 202 
6.6.2 监测当前的进程信息 202 
6.6.3 实现进程的实时监测 205 
6.6.4 实现关闭指定进程的功能 206 
6.7 内存监测模块的实现 207 
6.8 cpu监测模块的实现 213 
6.9 小结 217 
第7章 ftp客户端程序（internet会话+ftp技术） 218 
教学视频：29分钟 
7.1 ftp客户端程序简介 218 
7.1.1 树形结构浏览本地系统文件资源 218 
7.1.2 列表视图显示ftp服务器上的文件资源 218 
7.1.3 拖放实现文件的上传与下载 218 
7.1.4 资源管理器的技术简介 220 
7.2 控件知识 221 
7.2.1 制作浮动对话框 221 
7.2.2 为浮动对话框的控件添加处理事件 222 
7.2.3 树形视图项目的拖动 223 
7.2.4 列表视图项目的拖动 226 
7.3 实现ftp客户端的关键技术 228 
7.3.1 cinternetsession类 228 
7.3.2 ftpconnection类 229 
7.4 ftp客户端程序的模块实现 230 
7.4.1 ftp连接模块的设计实现 230 
7.4.2 获取ftp当前路径下的所有文件信息 233 
7.4.3 ftp客户端文件下载模块 236 
7.4.4 ftp客户端文件上传模块 237 
7.5 小结 238 
第8章 音乐播放器（active movie control object控件+不规则按钮+托盘） 239 
教学视频：37分钟 
8.1 音乐播放器简介 239 
8.1.1 打开音乐文件 239 
8.1.2 播放音乐的功能 240 
8.1.3 暂停播放及停止播放功能 240 
8.1.4 循环播放功能 241 
8.1.5 调节音量大小 241 
8.1.6 将播放器最小化到托盘 241 
8.1.7 音频播放器的技术简介 241 
8.2 slider控件 242 
8.2.1 用作标识进度的slider控件 242 
8.2.2 调节音量的slider控件 243 
8.3 定制不规则的按钮控件 244 
8.3.1 自定义按钮类 244 
8.3.2 自定义按钮的构造及析构的实现 246 
8.3.3 创建不规则按钮的方法 246 
8.3.4 实现不规则按钮的几个重要方法 248 
8.3.5 为不规则按钮添加背景图像 249 
8.3.6 实现按钮的状态背景图像 250 
8.3.7 实现添加按钮标题及边框的功能 251 
8.3.8 实现绘制按钮的功能 253 
8.3.9 处理按钮的鼠标事件 254 
8.3.10 鼠标状态决断及点测试功能的实现 255 
8.3.11 自定义不规则按钮的实现实例 256 
8.4 实现音乐播放器的关键技术 258 
8.4.1 active movie control object控件 258 
8.4.2 音乐播放器最小化到托盘的实现方法 260 
8.5 音乐播放器的界面设计 262 
8.5.1 创建播放器工程 262 
8.5.2 设计并载入播放器背景图像 263 
8.5.3 定制并添加不规则按钮 264 
8.6 音乐播放器的功能设计与实现 265 
8.6.1 设计播放器的属性变量 265 
8.6.2 利用向导添加功能函数 266 
8.6.3 实现打开音频文件的功能 266 
8.6.4 实现开始播放音乐的功能 267 
8.6.5 实现暂停播放音乐的功能 267 
8.6.6 实现停止播放音乐的功能 268 
8.6.7 实现循环播放音乐的功能 268 
8.6.8 实现最小化播放器的功能 268 
8.6.9 实现关闭播放器的功能 269 
8.6.10 处理托盘图标消息 269 
8.6.11 实现播放器的拖动功能 270 
8.6.12 实现播放器的音量控制功能 270 
8.6.13 绘制播放器界面 271 
8.6.14 监控音乐的播放器进度 273 
8.7 小结 274 
第9章 视频播放器（directshow技术） 275 
教学视频：37分钟 
9.1 视频播放器简介 275 
9.1.1 视频播放器功能总述 275 
9.1.2 打开视频文件 276 
9.1.3 播放控制功能简介 276 
9.1.4 视频播放器的技术简介 277 
9.2 扩展cstatic控件类 277 
9.2.1 重写presubclasswindow()函数 278 
9.2.2 重写defwindowproc()函数 279 
9.2.3 实现控件的拖曳功能 280 
9.3 扩展csliderctrl控件类 281 
9.4 directshow在vc++ 6.0下的环境搭建 282 
9.4.1 directshow的安装环境 282 
9.4.2 directshow的参考文档 282 
9.4.3 编译baseclasses 282 
9.4.4 配置directshow针对所有项目的环境 283 
9.4.5 引入项目所需要的directshow库文件 284 
9.5 directshow简介 284 
9.5.1 directx组件简介 285 
9.5.2 directshow系统组成 285 
9.5.3 directshow开发简单媒体播放器的过程 287 
9.6 directshow接口管理类 288 
9.6.1 实例化过滤器图表管理器 289 
9.6.2 创建过滤器图表 290 
9.6.3 过滤器图表中多媒体数据流方法的接口 290 
9.6.4 处理过滤器图表的事件接口 291 
9.6.5 视频特性设置接口 292 
9.6.6 音频流的音量和平衡控制接口 293 
9.6.7 播放器窗口的属性设置接口 294 
9.6.8 搜索数据流位置和设置播放速率的接口 295 
9.6.9 释放接口指针 296 
9.7 工具条及状态栏模块的实现 297 
9.7.1 工具条及状态栏模块界面的设计与实现 298 
9.7.2 添加界面控件变量 298 
9.7.3 绑定过滤器图表管理器 298 
9.7.4 初始化工具栏 299 
9.7.5 调整工具栏的位置 300 
9.7.6 绘制状态栏 300 
9.7.7 实现进度条功能 302 
9.7.8 实现声音控制功能 303 
9.7.9 功能按钮使能控制 303 
9.8 播放器主窗体的设计与实现 303 
9.8.1 播放器主窗体的界面设计与实现 304 
9.8.2 主窗体初始化模块的设计与实现 305 
9.8.3 播放窗口消息处理模块的设计与实现 307 
9.8.4 菜单消息处理模块的设计与实现 311 
9.8.5 工具栏控制窗体消息处理模块的实现 318 
9.9 小结 318 
第10章 局域网聊天工具（socket+tcp+自定义消息+图像组合框） 319 
教学视频：33分钟 
10.1 局域网聊天工具简介 319 
10.1.1 视频播放器功能简介 319 
10.1.2 视频播放器技术简介 320 
10.2 控件知识 321 
10.2.1 位图按钮cbitmapbutton 321 
10.2.2 ip编辑框 325 
10.2.3 图像列表控件 328 
10.2.4 图像组合框 330 
10.3 socket简介 332 
10.4 socket常用数据类型 332 
10.4.1 socket类型数据 333 
10.4.2 word类型数据 333 
10.4.3 wsadata类型及lpwsadata类型 333 
10.4.4 sockaddr_in及in_addr类型数据 334 
10.4.5 sockaddr类型 334 
10.5 socket常用函数 335 
10.5.1 初始化socket环境 335 
10.5.2 使用socket()函数实现创建套接字功能 335 
10.5.3 使用setsockopt()函数实现设置socket的属性功能 336 
10.5.4 使用closesocket()函数实现关闭套接字功能 336 
10.5.5 使用bind()函数实现地址绑定功能 336 
10.5.6 使用listen()函数实现监听端口功能 336 
10.5.7 使用accept()函数实现接收连接功能 337 
10.5.8 使用connect()函数实现连接服务器功能 337 
10.5.9 使用send()函数实现发送数据功能 338 
10.5.10 使用rect()函数实现接收数据功能 338 
10.6 csocket的封装 339 
10.7 服务器端模块的设计与实现 340 
10.7.1 服务器端模块界面设计与实现 340 
10.7.2 服务器模块的功能设计与实现 342 
10.8 客户端模块的设计与实现 347 
10.8.1 客户端界面的设计与实现 348 
10.8.2 客户端功能的设计与实现 349 
10.9 小结 353 
第11章 截屏工具（动态链接库+键盘钩子+光标捕获+类橡皮类crecttracker） 354 
教学视频：25分钟 
11.1 截屏工具简介 354 
11.1.1 主界面使用简介 354 
11.1.2 截图模块简介 355 
11.2 动态链接库 356 
11.2.1 dll技术简介 356 
11.2.2 vc++ 6.0开发dll实例 357 
11.3 钩子技术 359 
11.3.1 钩子技术简介 359 
11.3.2 键盘钩子dll的实现 361 
11.3.3 键盘钩子dll的调用 363 
11.4 crecttracker技术简介 364 
11.4.1 crecttracker类的常用数据变量 364 
11.4.2 crecttracker类的常用成员函数 365 
11.4.3 crecttracker类的应用实例 366 
11.5 功能控制模块的设计与实现 369 
11.5.1 功能控制模块的界面设计及实现 369 
11.5.2 截屏模块跳转功能的实现 372 
11.5.3 控制模块最小化到托盘功能的实现 372 
11.5.4 控制模块在托盘中消息处理功能的实现 373 
11.5.5 关闭截屏工具功能的实现 373 
11.5.6 捕获键盘钩子消息功能的实现 374 
11.6 截屏主功能模块的设计与实现 375 
11.6.1 信息提示框的设计与实现 375 
11.6.2 截图模块主窗体的设计与实现 379 
11.6.3 截图功能的设计与实现 384 
11.7 小结 389 
第12章 扫雷游戏（定时器+gdi+数字时钟） 390 
教学视频：41分钟 
12.1 扫雷游戏简介 390 
12.1.1 游戏界面简介 390 
12.1.2 游戏规则及方法简介 391 
12.2 游戏系统资源 392 
12.2.1 菜单资源 392 
12.2.2 位图资源 392 
12.2.3 声音资源 394 
12.3 游戏初始化及游戏界面绘制 394 
12.3.1 初始化游戏变量 397 
12.3.2 初始化游戏 400 
12.3.3 绘制游戏界面 401 
12.4 游戏功能控制及使用说明的实现 405 
12.4.1 游戏菜单选项的功能实现 405 
12.4.2 帮助菜单选项的功能实现 408 
12.4.3 菜单选项的选中状态控制函数 409 
12.5 游戏与用户的交互 411 
12.5.1 鼠标单击事件的处理 411 
12.5.2 鼠标左键抬起事件的处理 412 
12.5.3 鼠标左右键同时按下事件的处理 415 
12.5.4 鼠标左右键同时按下后鼠标抬起事件的处理 416 
12.5.5 鼠标右键按下事件的处理 417 
12.5.6 鼠标右键抬起事件的处理 418 
12.6 游戏结果处理函数 419 
12.7 扫雷英雄榜模块的实现 421 
12.7.1 注册表简介 421 
12.7.2 vc++对注册表的操作 421 
12.7.3 注册表在本实例中的应用 423 
12.7.4 查询英雄榜数据 425 
12.7.5 英雄榜新纪录的更新模块 427 
12.8 小结 428 
第13章 串口调试器（串口编程+消息+多线程） 429 
教学视频：38分钟 
13.1 串口调试器简介 429 
13.1.1 串口调试器界面简介 429 
13.1.2 串口设置功能简介 430 
13.1.3 数据收发功能简介 430 
13.1.4 情景模式简介 431 
13.1.5 数据保存功能简介 432 
13.2 图标工具栏 433 
13.2.1 载入工具栏图像资源 433 
13.2.2 添加工具栏资源 434 
13.2.3 创建工具栏实例 434 
13.2.4 为工具栏添加图像资源关联 435 
13.2.5 为工具栏添加提示信息 435 
13.3 分组单选按钮 437 
13.3.1 创建单选按钮测试工程 437 
13.3.2 修改单选按钮属性 437 
13.3.3 添加单选按钮关联变量 438 
13.3.4 检测单选按钮效果 438 
13.4 串口基础知识 439 
13.4.1 串口简介 439 
13.4.2 串口通信简介 439 
13.5 串口通信编程基础 440 
13.5.1 打开串口 441 
13.5.2 配置串口 442 
13.5.3 读写串口 445 
13.5.4 关闭串口 448 
13.6 自定义串口类 449 
13.6.1 构造及析构函数的实现 450 
13.6.2 串口打开函数的实现 451 
13.6.3 processerrormessage()函数的实现 453 
13.6.4 串口线程函数的实现 454 
13.6.5 串口线程监控函数的实现 456 
13.6.6 串口关闭函数的实现 457 
13.6.7 读取串口数据函数的实现 457 
13.6.8 写串口函数的实现 458 
13.6.9 数据发送函数的实现 460 
13.7 主窗体的界面设计 460 
13.7.1 主界面布局设计 460 
13.7.2 主界面菜单的设计 461 
13.7.3 组合框显示控制及初始化 462 
13.7.4 单选按钮的控制及初始化 462 
13.7.5 复选框的控制及初始化 463 
13.7.6 添加控件关联变量 463 
13.8 配置窗体的设计与实现 463 
13.8.1 配置窗体的界面设计 464 
13.8.2 设置串口控制部分的组合框 464 
13.8.3 控件添加关联变量 468 
13.9 主窗体菜单及工具栏模块的功能实现 469 
13.9.1 串口开关控制功能的实现 469 
13.9.2 串口的属性设置 471 
13.9.3 将接收到的数据保存到文件中 472 
13.9.4 计数清零 473 
13.10 接收数据模块的功能实现 474 
13.10.1 接收数据显示控制模块 474 
13.10.2 接收数据处理模块 476 
13.11 发送数据模块的功能实现 478 
13.11.1 发送数据控制功能的实现 478 
13.11.2 发送数据操作的控制功能 479 
13.12 小结 482 
第14章 打印工具（文档视图+设备环境上下文） 483 
教学视频：18分钟 
14.1 打印编程基础知识 483 
14.1.1 通用打印对话框 483 
14.1.2 设备环境上下文 485 
14.1.3 视图打印 490 
14.1.4 保存和维护打印作业 491 
14.2 打印模块设计及功能展示 493 
14.2.1 打印工具模块功能展示 493 
14.2.2 打印工具程序的流程和原理 493 
14.3 打印工具 495 
14.3.1 创建打印模块工程 496 
14.3.2 创建各个功能类 496 
14.3.3 控制打印对话框 497 
14.3.4 创建打印视图 501 
14.3.5 创建打印预览视图 504 
14.3.6 实现打印列表功能 505 
14.4 小结 509 
第15章 监控技术（进程+opencv） 510 
教学视频：26分钟 
15.1 监控技术背景相关知识 510 
15.2 本地监控 510 
15.2.1 windows常用系统性能计数器对象简介 510 
15.2.2 使用性能计数器对象 511 
15.2.3 本地监控示例（cpu使用率） 512 
15.2.4 本地监控示例——各进程cpu占用率 514 
15.3 远程监控——远程摄像头实例 518 
15.3.1 远程监控实现原理与逻辑流程 518 
15.3.2 远程摄像头——opencv安装配置 518 
15.3.3 封装好的网络传输单元——类介绍 521 
15.3.4 封装好的网络传输单元——类使用（服务方） 522 
15.3.5 封装好的网络传输单元——类使用（客户方） 523 
15.3.6 远程摄像头——创建客户方工程 524 
15.3.7 远程摄像头——创建监控方工程 529 
15.4 小结 531 
第3篇 项目案例实战 
第16章 人事管理系统（odbc+sql server+多线程） 534 
教学视频：57分钟 
16.1 人事管理系统简介 534 
16.1.1 用户登录模块简介 534 
16.1.2 主界面简介 534 
16.1.3 员工管理模块简介 535 
16.1.4 保险管理模块简介 539 
16.1.5 合同管理模块简介 539 
16.1.6 部门管理模块简介 540 
16.2 实现人事管理系统的关键技术 541 
16.2.1 odbc简介 541 
16.2.2 创建odbc数据源 541 
16.2.3 odbc在vc++中的应用 543 
16.3 人事管理系统数据库设计 547 
16.3.1 需求分析 547 
16.3.2 概要设计 548 
16.3.3 数据库设计 548 
16.4 人事管理系统主界面的设计与实现 552 
16.4.1 主界面的设计与实现 552 
16.4.2 主界面的功能设计与实现 553 
16.5 综合信息管理模块设计与实现 555 
16.5.1 社保管理模块的设计与实现 555 
16.5.2 合同管理模块的设计与实现 562 
16.5.3 部门管理模块的设计与实现 566 
16.6 员工信息管理模块设计与实现 566 
16.6.1 员工管理主窗体的设计与实现 566 
16.6.2 员工信息管理模块的设计与实现 570 
16.6.3 入职管理模块的设计与实现 582 
16.6.4 转正管理模块的设计与实现 584 
16.6.5 离职管理模块的设计与实现 587 
16.6.6 借调管理及调动管理模块的设计与实现 591 
16.6.7 月末统计管理模块的设计与实现 593 
16.7 小结 597 
第17章 电子相册（双缓绘图+gdi+gdi+） 598 
教学视频：61分钟 
17.1 电子相册简介 598 
17.1.1 相册的管理模块 598 
17.1.2 新建相册模块 599 
17.1.3 相册浏览模块 599 
17.1.4 电子相册的技术简介 601 
17.2 位图按钮 601 
17.2.1 设置按钮属性 601 
17.2.2 载入按钮位图资源 601 
17.2.3 将位图资源设置为按钮的背景图片 602 
17.3 仿木质桌面的全屏对话框 602 
17.3.1 设置对话框全屏显示 602 
17.3.2 为对话框设计并载入木质效果的背景图资源 603 
17.3.3 编码实现图像作为对话框的背景图像 603 
17.4 设计个性鼠标光标 604 
17.4.1 设计并载入光标资源 604 
17.4.2 设置鼠标左键按下时的光标 604 
17.5 gdi+的基础知识 605 
17.6 vc++与gdi+开发环境的搭建 607 
17.6.1 下载解压gdi+开发包 607 
17.6.2 设置include及lib目录 607 
17.6.3 添加相关的宏定义 607 
17.6.4 添加相关的库文件 608 
17.6.5 测试gdi+搭建的环境 608 
17.7 gdi+与gdi共同实现双缓冲绘图 610 
17.7.1 重载窗体的onpaint()函数 610 
17.7.2 无双缓冲的效果 610 
17.7.3 利用双缓冲解决闪屏问题 611 
17.8 利用gdi+实现翻页效果 612 
17.9 电子相册的模块分析 617 
17.9.1 相册管理模块的设计与实现 617 
17.9.2 新建相册模块的设计与实现 622 
17.9.3 电子相册浏览模块的设计与实现 625 
17.10 小结 640 
第18章 超市管理系统（ado+sql+access） 641 
教学视频：60分钟 
18.1 超市管理系统简介 641 
18.1.1 用户登录模块简介 641 
18.1.2 前台销售模块简介 641 
18.1.3 后台员工管理模块简介 642 
18.1.4 后台仓库管理模块简介 643 
18.1.5 后台票据管理模块简介 643 
18.1.6 后台货物管理模块简介 643 
18.1.7 后台营业统计管理模块简介 644 
18.2 实现超市管理系统的关键技术 645 
18.2.1 ado简介 645 
18.2.2 ado基础 645 
18.2.3 ado在vc++中的应用 646 
18.2.4 ado的封装类 649 
18.3 超市管理系统数据库设计 651 
18.3.1 需求分析 652 
18.3.2 概要设计 652 
18.3.3 数据库设计 653 
18.4 超市管理系统前台销售模块设计与实现 655 
18.4.1 登录模块的界面设计与实现 655 
18.4.2 登录模块的功能设计与实现 656 
18.4.3 销售模块的界面设计与实现 659 
18.4.4 销售模块的功能设计与实现 662 
18.5 超市管理系统后台管理模块设计与实现 670 
18.5.1 员工管理模块的设计与实现 670 
18.5.2 仓库管理模块的设计与实现 675 
18.5.3 票据管理模块的设计与实现 678 
18.5.4 商品管理模块的设计与实现 679 
18.5.5 营业统计模块的设计与实现 679 
18.6 小结 681
前言
为什么要写这本书？ 
在各种软件行业，Visual C++（简称VC++）的核心技术得到了广泛应用。目前市场上关于VC++的图书不少，但大多都是一些讲解基础知识的入门图书，真正从实战出发，通过模块开发和项目开发讲解的书却很少。 
为了让读者能够深入、透彻地理解核心技术及其广泛应用，本书在具体编写时以VC++开发时经常会遇到的典型模块和项目开发为主线，同时还穿插了各种核心技术和解决方案的详细讲解。通过本书中的13个模块和3个完整的项目案例，可以使初学者快速地掌握VC++应用程序开发，并对VC++应用程序的主流开发工具及相关技术有一个全面、直观和系统的认识，掌握各种解决方案的精髓。本书中的大量功能模块通用性强，可以用在完整的软件项目开发中。 
本书有何特色？ 
1．附带多媒体语音教学视频，提高学习效率 
为了便于读者理解本书内容，提高学习效率，作者专门为本书每一章内容都录制了大量的多媒体语音教学视频。这些视频和本书涉及的源代码一起收录于配书光盘中。 
2．涵盖VC++的各种热门开发技术 
本书结合典型模块和项目案例开发，详细介绍了图形图像、线程、消息、FTP技术、串口通信、网络通信、数据库、GDI、GDI+、DirectShow、动态链接库、OpenCV、钩子等技术。这些都是VC++中非常热门的开发技术。 
4．模块驱动，应用性强 
本书提供了13个VC++开发的典型模块。这些模块都是VC++开发中经常要用到的模块，有很强的实用性。这些模块相互独立，但也是逐渐增加难度，开发人员可以根据需要查阅和参考。 
5．项目案例典型，实战性强 
本书以经典模块和完整系统的项目为背景，书中最后一篇提供了3个项目实战案例。这些案例以现实职场中所开发的实际项目为背景，具有较强的实用性，而且这些案例分别使用不同的技术实现，便于读者融会贯通地理解书中所介绍的技术。 
6．提供完善的技术支持和售后服务 
本书提供了专门的技术支持邮箱：。读者在阅读本书的过程中有任何疑问，都可以通过该邮箱获得帮助。 
本书内容及知识体系 
第1篇 Visual C++项目开发基础（第1、2章） 
本篇主要对VC++集成开发环境进行简单的介绍，并对C++语言基础进行概略的讲解。主要内容包括VC++ 6.0程序设计简介、C++编程基础。这些内容都是VC++项目开发的必要基础。 
第2篇 典型模块开发（第3～15章） 
本篇主要介绍VC++开发中经常要用到的13个典型模块。主要内容包括桌面时钟、电子邮件收发管理器、系统资源管理器、系统任务管理工具、FTP客户端程序、音乐播放器、视频播放器、局域网聊天工具、截屏工具、扫雷游戏、串口调试器、打印工具和监控模块等。这13个典型模块注重编程思想与实际开发相结合，每个模块都可以用于实际的开发中。 
第3篇 项目案例实战（第16～18章） 
.　　本篇主要介绍3个实际开发的项目案例，包括人事管理系统（ODBC+SQL Server+多线程）、电子相册（双缓绘图+GDI+GDI+）及超市管理系统（ADO+SQL+Access）。这3个系统分别用不同的技术组合实现，讲解时对需求分析、数据库设计、持久层设计、业务层设计和表示层设计，都给出了完整的思路和实现过程。 
配书光盘内容介绍 
为了方便读者阅读本书，本书附带1张DVD光盘。内容如下： 
* 书中涉及的所有模块与项目案例的源代码； 
* 本书每章内容的多媒体语音教学视频； 
* 免费赠送的Visual C++开发教学视频及相关电子书。 
适合阅读本书的读者 
* 需要全面学习Visual C++开发技术的人员； 
* 广大VC++开发程序员； 
* C++/C程序员； 
* C++高级工程师； 
* 希望提高项目开发水平的人员； 
* 专业培训机构的学员； 
* 软件开发项目经理； 
* 需要一本案头必备查询手册的人员。 
阅读本书的建议 
* 没有VC++集成开发环境基础的读者，建议从第1章顺次阅读并演练每一个实例。 
* 有一定VC++集成开发基础的读者，可以根据实际情况有重点地选择阅读各个模块和完整系统。 
* 对于每一个模块和完整系统，读者先自己思考一下实现的思路然后再阅读，这样学习效果更好。 
* 如果对模块或完整系统的内容阅读一遍后仍然不理解，可以结合光盘中的多媒体视频讲解动手实现一次，这样理解就会更加深刻。 
本书作者及编委会成员 
本书由戴晟晖、杨国祥、陈国建主笔编写。其他参与编写的人员有王征、王石、姜海英、邵毅、张路平、李臻、武勇、徐宁、刘玉珊、麻雪、吝晓宁、范永龙、赵盟、傅靖、李佳、刘丹、肖冰、王行恒、冯浩楠、纪超、段桂东、黄宝生、张珍珍、石淑珍、陈超、牛晓辉、刘聪、任潇、张双、于志华、李秀劲、李胜美、蔡文仙、杜阳阳、吴兴亮、陈水望、黄任桢、梅婷婷、皇波、白雪蛟。在此一并表示感谢！ 
本书编委会成员有欧振旭、陈杰、陈冠军、顼宇峰、张帆、陈刚、程彩红、毛红娟、聂庆亮、王志娟、武文娟、颜盟盟、姚志娟、尹继平、张昆、张薛。 
编著者