第一篇 VC++基础知识 1
第1章 IDE安装与使用 1
1.1安装Visual C++6.0环境 1
1.1.1安装VC++6.0 1
1.1.2安装MSDN 2
1.2创建一个Console应用程序 2
1.3使用MSDN查找帮助信息 4
1.4调试自己的程序 5
1.5小结 5
第2章 回顾C++ 6
2.1结构体与类 6
2.2类成员的访问类型 7
2.3 this指针 7
2.4函数重载 8
2.5构造函数 9
2.6析构函数 10
2.7静态成员 12
2.7.1定义及操作静态成员 12
2.7.2操作静态成员的条件 13
2.8继承 13
2.8.1从Student类派生3种新学生类 14
2.8.2子类对象的构造函数 16
2.8.3覆盖父类的方法 17
2.8.4虚函数 18
2.8.5虚析构函数 20
2.9类的实现和定义分离 22
2.10 STL-—标准模板库,方便的数据结构 25
2.10.1向量vector 25
2.10.2双端队列deque 26
2.10.3链表list 27
2.10.4集合set 28
2.10.5映射map 29
2.11编程规范——匈牙利表示法 30
2.11.1变量的命名 30
2.11.2函数的命名 30
2.11.3类别的命名 31
2.11.4常量的命名 31
2.12小结 31
第3章 告别Console进入Windows 32
3.1创建第一个Windows应用程序 32
3.2与标准C++的不同 35
3.2.1入口函数不同 35
3.2.2数据类型的不同 36
3.2.3 Win32 API函数 36
3.3窗口的产生 37
3.3.1使用WNDCLASSEX结构体构造窗口类别 37
3.3.2使用RegisterClassEx注册窗口类别 37
3.3.3使用CreateWindow创建窗口 38
3.3.4 ShowWindow显示窗口及UpdateWindow更新窗口 38
3.3.5编写消息循环 38
3.3.6编写窗口过程函数 39
3.4 Windows事件驱动 39
3.5简单的GDI操作 40
3.6应用案例——跟踪鼠标在窗口上的坐标 40
3.6.1案例需求 41
3.6.2案例效果图 41
3.6.3需要掌握的知识点 41
3.6.4开发过程 41
3.7小结 42
第二篇 MFC编程 43
第4章 文档应用程序 43
4.1使用AppWizard——应用程序向导创建单文档程序 43
4.2 MFC程序框架分析 45
4.2.1 theApp全局对象 46
4.2.2 MFC中的WinMain函数 46
4.2.3窗口的句柄 46
4.3框架窗口 47
4.3.1框架窗口的重要成员函数 47
4.3.2改变窗口状态 48
4.4文档模板 50
4.5文档的序列化 50
4.5.1 MFC文档读写机制 50
4.5.2示例——建立可序列化的类 51
4.6文档视图结构 54
4.6.1一般视图类的使用 54
4.6.2文档与视图的相互访问 55
4.6.3切分窗口 55
4.7 MFC的编程的核心——消息映射 57
4.7.1使用类向导添加消息处理 57
4.7.2手动添加消息映射 58
4.8菜单编程 59
4.8.1使用资源视图设计菜单 59
4.8.2响应菜单消息 60
4.8.3更改应用程序菜单 61
4.8.4使用快捷菜单(右键菜单) 63
4.9工具栏编程 64
4.9.1使用工具栏编辑器 64
4.9.2工具栏菜单结合 64
4.9.3多个工具栏使用 65
4.10状态栏编程 67
4.10.1状态栏的定义 67
4.10.2状态栏的常用操作 68
4.11小结 71
第5章 对话框编程 72
5.1创建一个对话框程序 72
5.1.1使用AppWizard——应用程序向导创建对话框程序 72
5.1.2在对话框中添加控件 73
5.1.3通过修改对话框属性改变对话框样式 73
5.1.4简单的控件编程 74
5.2数据交换(DDX)与数据验证(DDV) 74
5.2.1使用控件类获得控件数据 74
5.2.2使用数据交换(DDX)机制获得控件数据 75
5.2.3数据验证(DDV) 77
5.3添加对话框资源 78
5.4对话框类型 79
5.4.1模态对话框 79
5.4.2非模态对话框 79
5.5通用对话框 80
5.5.1示例——使用文件选择对话框CFileDialog类打开文件 80
5.5.2示例——使用颜色选择对话框CColorDialog类改变颜色 81
5.6应用案例——文件分割工具制作 83
5.6.1案例效果图 83
5.6.2需要掌握的知识点 83
5.6.3文件操作 83
5.6.4开发过程 84
5.6.5 Enter键调用OnOK函数 91
5.7小结 91
第6章 常用控件 92
6.1静态控件 92
6.1.1静态文本控件 92
6.1.2组框 92
6.1.3静态图片 92
6.1.4静态控件的其他用途 92
6.2按钮 93
6.2.1单选按钮 93
6.2.2复选框 94
6.2.3示例——用户注册信息审查 94
6.3文本框和微调按钮 97
6.3.1通过修改文本框属性改变文本框样式 97
6.3.2通过响应消息来操作文本框 97
6.3.3文本框与微调按钮配合使用 97
6.4列表框和组合框 98
6.4.1列表框的常用属性 98
6.4.2列表框的常用操作方法 98
6.4.3组合框 98
6.4.4示例——文件列表对话框制作 99
6.5列表控件 101
6.5.1为列表控件添加表列 102
6.5.2为列表控件添加表项 103
6.5.3列表控件的扩展属性 105
6.5.4列表控件的排序 105
6.5.5示例——带有排序与自绘制表头工程的列表控件 105
6.6树控件 109
6.6.1添加删除树控件节点 109
6.6.2示例——树控件使用演示 110
6.7标签控件 111
6.8小结 111
第7章 图形设备接口GDI 112
7.1回顾前面的例子 112
7.2 GDI操作函数 112
7.2.1绘制文本TextOut和DrawText 112
7.2.2绘制点SetPixel 113
7.2.3绘 制直线MoveToEx和LineTo 113
7.2.4绘制椭圆Ellipse 114
7.2.5绘制矩形FillRect与Rectangle 114
7.3坐标映射 114
7.4 MFC中封装的GDI 115
7.4.1使用CDC、CClientDC和CWindowDC绘制图形 115
7.4.2示例——使用CclientDC绘制椭圆 115
7.5字体 116
7.5.1创建字体 116
7.5.2设置字体 116
7.6画笔 117
7.7画刷 117
7.8位图 117
7.8.1装载位图 117
7.8.2显示位图 118
7.8.3示例——显示位图 119
7.9应用案例——自绘制按钮制作 122
7.9.1案例效果图 122
7.9.2需要掌握的知识点 122
7.9.3控件皮肤编程原理 122
7.9.4开发过程 122
7.10应用案例——自绘制表头的列表控件 126
7.10.1案例效果图 127
7.10.2开发过程 127
7.11小结 131
第8章 ActiveX控件制作 132
8.1创建ActiveX控件 132
8.2使用IDE带的工具测试ActiveX控件 133
8.3如何在程序中使用ActiveX控件 133
8.4 ActiveX控件设计 135
8.4.1为ActiveX控件添加属性 135
8.4.2为ActiveX控件添加方法 137
8.5示例——制作PictureBox控件 138
8.6小结 140
第三篇 实战开发必备 141
第9章 动态连接库DLL 141
9.1示例——编写简单的DLL 141
9.2导入导出DLL中的函数 142
9.2.1用DLL导出函数 142
9.2.2在程序中导入DLL中的函数 143
9.3 DLL中导出类 143
9.4如何调试DLL 144
9.5 MFC动态链接库及其使用 147
9.5.1创建扩展MFC DLL 147
9.5.2导入MFC DLL中的类 148
9.6应用案例——将自绘制按钮从MFC DLL中导出 149
9.7小结 149
第10章 HOOK编程 150
10.1编写一个简单的HOOK程序 150
10.1.1安装钩子 150
10.1.2使用HOOK函数处理截获的消息 151
10.1.3示例——截获当前程序的按键消息 151
10.2全局HOOK 153
10.2.1编写全局钩子DLL 153
10.2.2使用程序调用DLL启动钩子 155
10.3应用案例——探索黑客盗取密码的原理 156
10.3.1需要掌握的知识点 156
10.3.2获取密码的原理 156
10.3.3鼠标钩子 156
10.3.4开发密码查看器过程 157
10.4小结 159
第11章 多线程编程 160
11.1如何创建线程 160
11.1.1使用CreateThread创建一个线程 160
11.1.2编写线程函数 161
11.1.3示例——创建一个线程 161
11.1.4示例——创建多个线程,模拟机票订购 162
11.2线程同步 164
11.2.1线程之间切换——时间片 165
11.2.2使用互斥对象来同步线程 166
11.2.3示例——修改多线程例子,使用互斥对象对其进行同步 166
11.2.4示例——使用命名互斥对象判断程序是否多次运行 168
11.3线程同步的其他方法 169
11.3.1示例——使用事件对象完成线程的同步 170
11.3.2示例——使用临界区完成线程的同步 171
11.4线程同步导致的死锁及预防 173
11.4.1示例——使用临界区时,意外退出导致死锁 173
11.4.2预防死锁 175
11.5应用案例——使用多线程完善文件分割工具 175
11.5.1案例效果图 175
11.5.2需要掌握的知识点 175
11.5.3开发过程 175
11.6小结 180
第12章 Socket网络编程 181
12.1 BS模式与CS模式 181
12.2 Winsock库的装入和释放 181
12.3使用sockaddr_in保存客户的地址 181
12.3.1主机字节序到网络字节序之间的转化 182
12.3.2示例——获取本机IP地址 182
12.3.3示例——域名解析 183
12.4 TCP套接字的服务器与客户端设计 184
12.4.1 TCP服务器与客户端过程图 184
12.4.2示例——简单的TCP服务器 185
12.4.3示例——简单的TCP客户端 186
12.5 UDP套接字编程 187
12.5.1 UDP服务器与客户端过程图 188
12.5.2示例——基于UDP的服务器实现 188
12.5.3示例——基于UDP的客户端实现 189
12.6套接字模式 191
12.6.1阻塞模式 191
12.6.2非阻塞模式 191
12.7 select模型应用——管理多个套接字 191
12.7.1 select函数的使用及相关宏 191
12.7.2示例——可以管理多个套接字的TCP服务器 192
12.8 WSAAsyncSelect模型应用——管理多个套接字 194
12.8.1 WSAAsyncSelect的使用方法 194
12.8.2示例——可以管理多个套接字的TCP服务器 195
12.9广播通信 198
12.9.1设置套接字选项 198
12.9.2示例——广播的发送端与接收端 198
12.10应用案例——利用广播开发局域网聊天室 200
12.10.1案例效果图 200
12.10.2开发过程 201
12.11小结 204
第13章 ADO数据库编程 205
13.1使用ADO开发程序 205
13.1.1使用ADO库之前的准备工作 205
13.1.2使用Connection对象连接数据库 205
13.1.3向数据库服务器提交SQL语句 206
13.1.4使用Recordset对象获取Select语句查询结果 207
13.2 ADO中的异常处理 208
13.3封装自己的ADO类 209
13.3.1类的声明 209
13.3.2类的实现 211
13.3.3 ADO类的使用 212
13.4应用案例——ACCESS数据库查看器 214
13.4.1案例效果图 214
13.4.2案例需求 215
13.4.3需要掌握的知识点 215
13.4.4创建工程 215
13.4.5修改框架窗口样式 215
13.4.6添加操作数据库对话框资源及其对应的FormView 216
13.4.7切分窗口 216
13.4.8操作数据库 217
13.5小结 231
第14章 多媒体控制接口MCI编程 232
14.1 MCI设备类型 232
14.2 MCI的编程步骤 232
14.2.1使用mciSendCommand函数发送MCI命令 232
14.2.2示例——打开一个MP3文件并播放 233
14.3封装自己的MCI类 234
14.3.1 MCI类的声明 234
14.3.2 MCI类的实现 235
14.3.3使用MCI类 237
14.4使用MCIWnd播放视频 238
14.5应用案例——编写MP3播放器 239
14.5.1案例效果图 239
14.5.2需要掌握的知识点 240
14.5.3开发过程 240
14.6小结 242
第四篇 实战篇 243
第15章 进程管理器开发 243
15.1案例效果图 243
15.2案例需求 244
15.3需要掌握的知识点 244
15.4进程相关API操作 244
15.5服务相关API操作 245
15.5.1服务的枚举 245
15.5.2服务的启动与停止 246
15.6获得内存、CPU信息 246
15.7启动项及注册表相关操作 247
15.7.1枚举注册表项的值 247
15.7.2删除注册表项的值 248
15.8开发过程 249
15.8.1创建工程 249
15.8.2进程管理 249
15.8.3服务管理 252
15.8.4注册表启动项管理 255
15.8.5状态栏显示信息 259
15.9小结 264
第16章 监视剪贴板程序制作 265
16.1案例效果图 265
16.2案例需求 265
16.3需要掌握的知识点 265
16.4剪贴板查看器操作基础 266
16.4.1获取剪贴板内容 266
16.4.2剪贴板查看器链 267
16.4.3设置当前窗口为剪贴板查看器 267
16.4.4退出时删除链中的当前窗口 268
16.5开发过程 268
16.5.1创建工程 268
16.5.2解析URL模块开发 268
16.5.3剪贴板模块开发 270
16.6小结 272
第17章 多线程HTTP下载工具制作 273
17.1案例效果图 273
17.2案例需求 273
17.3需要掌握的知识点 273
17.4 MFC中的WinInet 274
17.4.1使用MFC WinInet下载文件过程 274
17.4.2示例——使用MFC WinInet读取网页源代码 275
17.4.3示例解析 277
17.5 IE右键菜单原理 278
17.5.1 IE右键菜单对应的注册表 278
17.5.2编写JavaScript启动程序 279
17.6开发过程 281
17.6.1获得命令行参数 281
17.6.2多线程下载类设计 281
17.6.3使用CdownloadThreadManager下载资源 291
17.6.4统计下载速度与下载用时 294
17.7小结 295
第18章 远程控制软件制作 296
18.1案例效果图 296
18.2案例需求和知识点 296
18.2.1案例需求 296
18.2.2需要掌握的知识点 296
18.3图像传输优化方法 297
18.4模拟鼠标动作 297
18.5开发过程 297
18.5.1服务端结构分析 298
18.5.2 GDI结构与链表设计 298
18.5.3初始化GDI链表与清理GDI链表 300
18.5.4启动服务接收网络事件 302
18.5.5保证发送接收大小 304
18.5.6通信协议设计 305
18.5.7发送图像数据 306
18.5.8客户端结构分析 312
18.5.9客户端创建 312
18.5.10客户端GDI结构与链表 312
18.5.11连接服务器 314
18.5.12获取及显示远程图像 316
18.5.13发送鼠标事件 320
18.6小结 321
第19章 学生成绩管理系统开发 322
19.1系统结构分析 322
19.2案例需求 322
19.3数据库设计 323
19.4案例效果图 326
19.5需要掌握的知识点 327
19.6使用DataGrid控件显示数据 328
19.6.1添加DataGrid控件 328
19.6.2在程序中使用DataGrid控件 328
19.7开发过程 329
19.7.1准备工作 329
19.7.2登录窗口 329
19.7.3主窗口 331
19.7.4管理成绩信息窗口 334
19.7.5管理分数对话框 337
19.7.6审核窗口 342
19.8小结 346
第20章 贸易信息管理系统 347
20.1系统分析与数据库设计 347
20.1.1需求分析 347
20.1.2系统设计 347
20.1.3数据库设计 348
20.1.4创建数据库 350
20.2建立项目框架 350
20.2.1选择数据库程序开发技术 351
20.2.2新建项目 351
20.2.3添加ADO封装类和ADO控件 352
20.3系统用户模块 353
20.3.1实现用户登录功能 353
20.3.2用户信息管理 360
20.4实体信息管理模块 365
20.4.1客户信息管理 365
20.4.2供应商信息管理 372
20.4.3员工信息管理 378
20.4.4商品信息管理 380
20.5进销管理模块 386
20.5.1销售管理 386
20.5.2进货管理 392
20.6统计报表模块 398
20.6.1使用水晶报表创建报表 398
20.6.2员工销售业绩统计报表 404
20.6.3各种商品销售情况统计报表 407
20.7系统运行结果 408
20.8小结 408