第1章 概述 1
1.1 Visual C++ 2005案例程序演示 1
1.2 认识Visual C++ 2005 5
1.2.1 Visual C++简史 5
1.2.2 Visual C++ 2005的特征 6
1.2.3 学习Visual C++ 2005的方法 7
1.3 Visual Studio 2005开发环境 7
1.3.1 起始页 8
1.3.2 菜单和工具栏 8
1.3.3 “工具箱”面板 10
1.3.4 “类视图”面板 10
1.3.5 “对象浏览器”面板 11
1.3.6 代码编辑器/窗体设计器 11
1.3.7 “属性”面板 13
1.3.8 定制开发环境 13
1.4 第一个应用程序“Hello World” 15
1.4.1 新建项目 15
1.4.2 预编译、连接与运行 21
1.4.3 编写程序代码 23
1.4.4 编译、连接与运行 24
习题1 25
第2章 Windows编程基础 27
2.1 Windows编程概念 27
2.1.1 事件与消息 27
2.1.2 消息驱动 28
2.1.3 消息响应函数 28
2.1.4 资源管理 29
2.2 Win32应用程序 29
2.2.1 简单的Win32应用程序 29
2.2.2 Win32应用程序分析 30
2.2.3 Windows编程特点 37
2.2.4 Windows基本数据类型 38
2.3 MFC基础 38
2.3.1 MFC的概念 39
2.3.2 MFC简介 39
2.3.3 MFC的结构体系 41
2.3.4 MFC应用程序基本框架 41
2.3.5 开发MFC应用程序的基本方法 42
2.4 从Win32到MFC 44
2.4.1 MFC应用程序的运行步骤 44
2.4.2 第一个MFC应用程序“Hello world!”的分析 48
习题2 51
第3章 MFC应用程序的界面设计与资源管理 52
3.1 资源与界面 52
3.2 资源管理 52
3.2.1 应用程序的打开与关闭 53
3.2.2 浏览应用程序资源 55
3.2.3 增加新资源 56
3.2.4 删除资源 57
3.3 资源编辑器 58
3.3.1 快捷键 58
3.3.2 对话框 59
3.3.3 图标 64
3.3.4 菜单 64
3.3.5 字符串表 67
3.3.6 工具栏 67
3.4 界面编程训练——小时钟程序 68
3.4.1 新建应用程序项目 69
3.4.2 用户界面设计 69
3.4.3 为编辑控件关联变量 73
3.4.4 为视图类添加变量 73
3.4.5 定时器的启动与关闭 75
3.4.6 添加定时器消息WM_TIMER处理函数 77
3.4.7 菜单项状态更新 79
3.4.8 测试程序 80
习题3 81
第4章 MFC的消息和命令 82
4.1 演示消息处理实例程序 82
4.2 Windows操作系统的消息 83
4.2.1 Windows消息的发送和接收 83
4.2.2 MFC的消息处理机制 83
4.2.3 Windows的消息分类 86
4.2.4 Windows程序消息处理过程 87
4.3 MFC应用程序消息处理实例 88
4.3.1 鼠标消息处理实例 89
4.3.2 键盘消息处理实例 93
4.3.3 定时器消息处理实例 96
4.3.4 自定义消息处理实例 98
习题4 102
第5章 对话框与常用控件 103
5.1 演示计算器程序MyCalculator 103
5.2 开发MyCalculator程序 104
5.2.1 创建项目 104
5.2.2 可视化设计 105
5.2.3 为编辑框IDC_DISPLAY引入变量 109
5.2.4 为CMyCalculatorDlg类添加数据成员 111
5.2.5 为Button按钮的BN_CLICKED事件添加响应函数 113
5.2.6 编写程序代码 114
5.2.7 技术要点 118
5.2.8 优化MyCalculator程序 121
5.3 常用控件的应用 121
5.3.1 静态文本控件 121
5.3.2 按钮控件 122
5.3.3 编辑框控件Edit 124
5.3.4 列表框控件List Box 125
5.3.5 组合框控件ComboBox 126
5.3.6 滚动条控件Scroll Bar 127
5.3.7 滑动条控件Slider Control 128
5.3.8 旋转按钮控件Spin Control 129
5.4 演示“口令”对话框程序 129
5.5 开发“口令”对话框程序 130
5.5.1 预备知识 130
5.5.2 编辑“口令”对话框资源 132
5.5.3 创建“口令”对话框类 133
5.5.4 为口令编辑框引入变量 133
5.5.5 以模式对话框方式调用“口令”对话框 134
5.5.6 以非模式对话框方式调用“口令”对话框 135
5.6 通用对话框 137
5.6.1 文件对话框类CFileDialog的使用方法 139
5.6.2 字体对话框类CFontDialog的使用方法 139
5.6.3 颜色对话框类CColorDialog的使用方法 141
5.6.4 打印对话框类CPrintDialog的使用方法 141
5.7 信息对话框 141
习题5 142
第6章 文档与视图结构 144
6.1 学生档案管理应用程序 144
6.2 文档与视图的概念 145
6.2.1 文档 145
6.2.2 视图 145
6.2.3 文档与视图的关系 146
6.2.4 文档与视图的交互过程 146
6.3 单文档应用程序 148
6.3.1 创建项目 148
6.3.2 可视化界面设计 150
6.3.3 给文档类添加成员变量 152
6.3.4 给视图类添加成员变量 153
6.3.5 变量初始化 154
6.3.6 处理数据记录的录入 155
6.3.7 查看结果 158
6.3.8 组合框介绍 158
6.4 文档的存储和装入 159
6.4. 1利用CFile类操作文件 159
6.4.2 工具栏的可视化设计 165
6.4.3 为新建的“我的打开”菜单项编写代码 165
6.4.4 为新建的“我的存储”菜单项编写代码 167
6.4.5 查看结果 168
6.5 添加串行化功能 168
6.5.1 串行化概述 168
6.5.2 添加串行化存储和装入 170
6.5.3 查看结果 171
习题6 171
第7章 屏幕绘图 172
7.1 绘图程序 172
7.2 设备环境和设备环境类 173
7.2.1 概述 173
7.2.2 认识设备环境类 173
7.3 绘图工具 176
7.3.1 画笔类CPen 176
7.3.2 画刷类CBrush 177
7.3.3 字体类CFont 178
7.4 矢量图形 180
7.4.1 绘图模式 180
7.4.2 基本矢量图形 180
7.5 位图显示 182
7.5.1 CBitmap类 182
7.5.2 GDI位图的显示 182
7.5.3 BMP文件的显示 184
7.6 创建绘图程序 185
7.6.1 创建绘图程序项目 185
7.6.2 绘图程序的菜单设计 186
7.6.3 工具栏的可视化设计 187
7.7 实现程序的绘图功能 189
7.7.1 设计CMyDrawView类相关变量 189
7.7.2 绘图环境的初始化 192
7.7.3 添加菜单项消息响应函数 192
7.7.4 添加响应鼠标动作代码 195
7.7.5 修改OnDraw()函数 197
7.8 完善绘图交互手段 198
7.8.1 添加键盘加速键 198
7.8.2 添加快捷菜单 199
7.8.3 菜单项的状态更新 202
7.9 相关知识 204
7.9.1 Invalidate()函数 204
7.9.2 CPoint类 204
7.9.3 CRect类 204
7.9.4 CMenu类 205
习题7 206
第8章 多媒体技术 207
8.1 媒体播放器示例 207
8.2 MCI编程基础 208
8.2.1 MCI设备类型 208
8.2.2 MCI命令字符串接口控制 209
8.2.3 MCI应用示例 211
8.3 封装一个MCI控制类:CMCIClass 213
8.3.1 CMCIClass类的设计 213
8.3.2 CMCIClass类的定义 214
8.3.3 CMCIClass类的实现 214
8.4 媒体播放器 219
8.4.1 创建应用程序项目 219
8.4.2 设计应用程序界面 220
8.4.3 将CMCIClass类插入工程 221
8.4.4 为“WAVE”Radio控件引入变量 222
8.4.5 为实现Button按钮的功能编写代码 223
8.4.6 按钮状态更新 225
8.4.7 修改项目设置、构建并测试程序 226
8.5 为MyPlayer添加进程条 227
8.5.1 进程条的可视化设计 227
8.5.2 为Progress和Static Text控件引入变量 228
8.5.3 初始化进程条、设置定时器 229
8.5.4 操作进程条 230
8.5.5 修改进程条可见属性 231
8.5.6 构造并运行MyPlayer 231
8.5.7 相关知识 231
习题8 232
第9章 数据库编程 233
9.1 简易多媒体数据库系统 233
9.2 ODBC类的编程基础 234
9.2.1 ODBC的结构 234
9.2.2 MFC提供的ODBC类 234
9.2.3 应用ODBC编程 235
9.2.4 创建数据源 235
9.2.5 在ODBC应用程序中注册数据源 238
9.3 多媒体数据库 239
9.3.1 创建应用程序项目 239
9.3.2 可视化设计 241
9.3.3 为各Edit Control编辑框引入变量 243
9.3.4 添加消息响应函数 243
9.3.5 编写程序代码 244
9.3.6 查看结果 247
9.3.7 相关知识 248
9.4 简易ADO技术数据库系统 249
9.5 ADO技术简介 250
9.5.1 ADO的特点 250
9.5.2 ADO编程模型 251
9.5.3 ADO接口简介 252
9.5.4 ADO库 252
9.6 ADO技术应用实例 252
9.6.1 创建应用程序 253
9.6.2 创建并连接数据库 254
9.6.3 操作数据库 255
9.6.4 程序的运行测试 260
习题9 260
第10章 网络编程 261
10.1 MyQQ聊天程序 261
10.1.1 功能介绍 261
10.1.2 系统开发设计 262
10.2 CSocket程序设计基础 263
10.2.1 计算机名、IP地址和端口 263
10.2.2 套接口Socket 265
10.2.3 WinSock的工作原理 266
10.3 基于CSocket的网络编程 268
10.4 MyQQ客户端程序 269
10.4.1 创建项目MyWc 269
10.4.2 界面可视化设计 269
10.4.3 设计通信类CWCSocket 271
10.4.4 为对话框中的各控件引入变量 272
10.4.5 建立CMyWcDlg类与CWCSocket类的关联 274
10.4.6 实现客户的登入和退出功能 276
10.4.7 实现聊天信息的发送 277
10.4.8 实现聊天信息的接收 278
10.4.9 实现私人聊天功能 282
10.4.10 处理控件的状态更新 282
10.4.11 运行测试,查看结果 282
10.4.12 相关知识:ClistBox、Check Box和定时器 283
10.5 MyQQ服务器端程序 284
10.5.1 创建项目MyWs 284
10.5.2 界面可视化设计 285
10.5.3 为对话框中的控件引入变量 286
10.5.4 创建CSocket类的派生类 286
10.5.5 建立CRWSock、CLSock与CMyWsDlg类的关联 287
10.5.6 处理客户的连接请求 290
10.5.7 处理接收客户的信息 292
10.5.8 实现服务器端程序的“启动与关闭”功能 295
10.5.9 处理控件的状态更新 296
10.5.10 运行测试,查看结果 296
10.5.11 相关知识:CPtrList类 296
习题10 297
第11章 多线程 298
11.1 桌面时差时钟 298
11.2 多线程概述 299
11.2.1 多线程与多任务 299
11.2.2 线程创建 300
11.2.3 线程终止 301
11.3 一个简单的多线程程序MyThread 301
11.3.1 创建多线程MyThread项目 301
11.3.2 编写程序代码 301
11.4 线程间的通信 304
11.4.1 使用全局变量进行线程通信 304
11.4.2 使用自定义消息进行线程通信 305
11.4.3 完善MyThread程序 307
11.5 线程同步 311
11.5.1 线程同步概述 311
11.5.2 使用临界区对象进行线程同步 312
11.5.3 使用互斥对象进行线程同步 314
11.5.4 使用信号量对象进行线程同步 316
习题11 318
第12章 动态链接库DLL 319
12.1 演示简易DLL程序 319
12.2 动态链接库概述 320
12.3 动态链接库编程基础 320
12.3.1 动态链接库函数的导入与导出 320
12.3.2 编译器对导入与导出的影响 321
12.3.3 隐式链接与显式链接 322
12.3.4 动态链接库入口点 323
12.3.5 客户程序如何寻找动态链接库 323
12.4 创建和使用扩展动态链接库 325
12.4.1 创建扩展动态链接库ExtCalcDll 326
12.4.2 编写使用ExtCalcDll的测试客户程序 330
12.5 创建和使用规则动态链接库 335
12.5.1 创建规则动态链接库RegularCalcDll 335
12.5.2 编写使用RegularCalcDll的测试客户程序——隐式链接 338
12.5.3 编写使用RegularCalcDll的测试客户程序——显式链接 340
习题12 342
附录 .NET开发环境Visual Studio 2005的安装 343
参考文献 350