第1章 对话框程序设计 1
1.1 MFC程序开发概述 2
1.1.1 MFC类库的产生与发展 2
1.1.2 MFC类库层次 2
1.1.3 MFC常用数据类型 4
1.1.4 MFC全局函数 4
1.2 对话框程序向导 7
1.2.1 应用向导生成对话框程序 7
1.2.2 对话框常用属性 8
1.2.3 对话框主要方法 10
1.2.4 添加成员变量和成员函数的方法 17
1.2.5 手动添加命令消息处理函数 18
1.3 自定义对话框 19
1.3.1 创建对话框 19
1.3.2 显示对话框 20
1.4 消息对话框 21
1.5 常用控件 22
1.5.1 静态文本 22
1.5.2 编辑框控件 26
1.5.3 图像控件 31
1.5.4 按钮控件 32
1.5.5 复选框控件 37
1.5.6 单选按钮控件 39
1.5.7 组合框控件 39
1.5.8 列表框控件 44
1.6 **控件 49
1.6.1 图像列表控件 49
1.6.2 列表视图控件 51
1.6.3 树控件 59
1.6.4 标签控件 68
1.7 Windows通用对话框 71
1.7.1 使用“文件”对话框打开和保存文件 71
1.7.2 使用“字体”对话框设置文本字体 74
1.7.3 使用“颜色”对话框设置文本背景颜色 75
1.8 综合实例——学生信息管理 76
知识点提炼 78
习题 79
实验:登录对话框 79
实验目的 79
实验内容 79
实验步骤 79
第2章 文档/视图程序设计 82
2.1 构建文档/视图应用程序 82
2.2 文档、视图结构的创建 84
2.2.1 文档模板的创建 84
2.2.2 文档的创建 85
2.2.3 框架与视图的创建 86
2.3 文档模板 87
2.3.1 文档管理器 87
2.3.2 文档模板 89
2.4 文档对象 90
2.4.1 文档对象的主要方法 90
2.4.2 文档对象的序列化 90
2.4.3 文档的初始化 92
2.4.4 文档的命令处理 92
2.4.5 文档的销毁 94
2.5 视图对象 96
2.5.1 视图对象的主要方法 96
2.5.2 视图对象的初始化 96
2.5.3 视图的销毁 97
2.6 框架对象 100
2.6.1 框架对象的主要方法 100
2.6.2 框架的初始化 100
2.6.3 框架的命令消息处理 101
2.7 视图分割 101
2.7.1 划分子窗口 101
2.7.2 任意划分子窗口 104
2.8 综合实例——简单画图程序 108
2.8.1 实例说明 109
2.8.2 实例实现 109
知识点提炼 112
习题 112
实验:文档/视图结构的打印 113
实验目的 113
实验内容 113
实验步骤 113
第3章 菜单、工具栏和状态栏 119
3.1 菜单设计 119
3.1.1 菜单资源设计 119
3.1.2 菜单项的命令处理 123
3.1.3 菜单项的更新机制 124
3.1.4 菜单类的主要方法 125
3.1.5 使用菜单类创建菜单 131
3.1.6 设计弹出式菜单 132
3.2 工具栏设计 134
3.2.1 工具栏资源设计 134
3.2.2 工具栏的命令处理 135
3.2.3 工具栏类(CToolBar)介绍 136
3.2.4 使用工具栏类创建工具栏 139
3.2.5 工具栏控制类(CToolBarCtrl)介绍 142
3.2.6 使用工具栏控制类创建工具栏 143
3.3 状态栏设计 145
3.3.1 状态栏类(CStatusBar)介绍 145
3.3.2 使用状态栏类创建状态栏 148
3.3.3 在状态栏中添加进度条控件 149
3.3.4 状态栏控制类(CStatusBarCtrl)介绍 150
3.3.5 使用状态栏控制类创建状态栏 151
3.4 综合实例——创建一个包含菜单、工具栏和状态栏的对话框程序 152
知识点提炼 154
习题 154
实验:在工具栏中加入控件 155
实验目的 155
实验内容 155
实验步骤 155
第4章 图形设备接口 157
4.1 GDI对象 157
4.1.1 画笔CPen 157
4.1.2 画刷CBrush 161
4.1.3 位图CBitmap 163
4.1.4 区域CRgn 166
4.1.5 字体CFont 170
4.1.6 设备环境CDC 173
4.1.7 调色板CPalette 180
4.2 文本输出 182
4.2.1 在具体位置和区域中输出文本 182
4.2.2 利用制表位控制文本输出 184
4.2.3 设置字体及文本颜色 185
4.3 图像显示 187
4.3.1 在设备上下文中绘制图像 188
4.3.2 从磁盘中加载图像到窗口中 190
4.4 综合实例——使控件具有不同的字体 191
知识点提炼 192
习题 192
实验:可变背景程序 193
实验目的 193
实验内容 193
实验步骤 193
第5章 多线程 195
5.1 线程概述 195
5.1.1 理解Windows内核对象 195
5.1.2 理解进程和线程 196
5.2 线程的创建 196
5.2.1 使用CreateThread函数创建线程 196
5.2.2 使用_beginthreadex函数创建线程 197
5.2.3 使用AfxBeginThread函数创建线程 198
5.2.4 应用MFC类库创建线程 200
5.3 线程的挂起、唤醒与终止 202
5.4 线程同步 204
5.4.1 多线程潜在的危险 204
5.4.2 使用事件对象实现线程同步 206
5.4.3 使用信号量对象实现线程同步 208
5.4.4 使用临界区对象实现线程同步 210
5.4.5 使用互斥对象实现线程同步 211
5.5 综合实例——多任务列表 213
知识点提炼 219
习题 220
实验:使用多线程实现临时文件清理 220
实验目的 220
实验内容 220
实验步骤 220
第6章 套接字编程 228
6.1 计算机网络基础 228
6.1.1 OSI参考模型 228
6.1.2 IP地址 229
6.1.3 地址解析 229
6.1.4 域名系统 230
6.1.5 TCP/IP协议 231
6.1.6 端口 232
6.2 套接字基础 232
6.2.1 套接字概述 233
6.2.2 网络字节顺序 233
6.2.3 套接字I/O模式 233
6.2.4 套接字通信过程 233
6.3 套接字函数 234
6.3.1 套接字函数介绍 234
6.3.2 基于套接字函数的网络聊天系统 238
6.4 MFC套接字编程 243
6.4.1 CAsyncSocket类 243
6.4.2 CSocket类 246
6.4.3 基于TCP协议的网络聊天室系统 247
6.5 综合实例——实用聊天软件 252
6.5.1 界面设计 252
6.5.2 服务器端程序设计 253
6.5.3 客户端程序设计 255
知识点提炼 257
习题 258
实验:设计文件发送应用程序 258
实验目的 258
实验内容 258
实验步骤 258
第7章 数据库操作技术 276
7.1 数据库基础知识 276
7.1.1 常用数据库软件的基本操作 277
7.1.2 基本SQL语句 284
7.2 ADO编程基础 291
7.2.1 ADO概述 291
7.2.2 在VisualC++中应用ADO技术 291
7.3 ADO对象 291
7.3.1 ADO连接对象 291
7.3.2 ADO记录集对象 294
7.3.3 ADO命令对象 297
7.3.4 ADO参数对象 298
7.4 ADO数据库操作技术 299
7.4.1 导入ADO动态链接库 299
7.4.2 使用ADO智能指针 300
7.4.3 初始化COM环境 301
7.4.4 连接数据库 301
7.4.5 获取连接数据库字符串的简单方法 303
7.4.6 打开记录集 304
7.4.7 对数据库对象的简单封装 305
7.4.8 遍历记录集 307
7.4.9 获取记录集记录数 309
7.4.10 向记录集中添加数据 309
7.4.11 修改现有记录 312
7.4.12 删除记录集中指定记录 313
7.4.13 使用SQL语句操作数据库 315
7.4.14 向数据库中添加位图 317
7.5 常用ADO控件 320
7.5.1 添加ADO控件 320
7.5.2 ADO控件举例 323
7.6 综合实例——对数据库进行增删改查操作 325
知识点提炼 328
习题 328
实验:表格控件操作 329
实验目的 329
实验内容 329
实验步骤 329
第8章 综合案例——商品销售管理系统 333
8.1 需求分析 333
8.2 总体设计 334
8.2.1 系统目标 334
8.2.2 开发及运行环境 334
8.2.3 系统功能结构图 334
8.2.4 业务流程图 335
8.3 数据库设计 335
8.3.1 数据表概要说明 336
8.3.2 主要数据表的结构 336
8.4 公共类设计 338
8.4.1 设计步骤 338
8.4.2 代码分析 340
8.5 主要功能模块的设计 341
8.5.1 主窗体设计 341
8.5.2 系统登录模块设计 346
8.5.3 操作员管理模块设计 348
8.5.4 商品入库管理模块设计 351
8.5.5 销售管理模块设计 356
8.5.6 查询管理模块设计 359
8.5.7 往来账管理模块设计 367
8.6 程序打包与安装 370
第9章 课程设计——网络五子棋 372
9.1 课程设计目的 372
9.2 功能描述 372
9.3 总体设计 373
9.3.1 构建开发环境 373
9.3.2 软件功能结构 373
9.3.3 业务流程图 373
9.4 实现过程 374
9.4.1 使用TCP协议进行网络通信 374
9.4.2 定义网络通信协议 375
9.4.3 服务器主窗口设计 377
9.4.4 棋盘窗口设计 379
9.4.5 游戏控制窗口设计 394
9.4.6 对方信息窗口设计 400
9.4.7 客户端主窗口设计 402
9.5 调试运行 405
9.6 课程设计总结 405
附录1 C++语言基础 406
A 类和对象概述 406
B 类的定义 406
C 类成员的访问 407
D 构造函数和析构函数 407
D.1 构造函数 407
D.2 析构函数 410
E 方法重载和运算符重载 411
E.1 方法重载 411
E.2 运算符重载 412
F 虚函数 413
G this指针 418
H 继承 420
H.1 单继承 420
H.2 多继承 422
H.3 虚继承 425
I 静态数据成员和静态方法 426
I.1 静态数据成员 426
I.2 静态方法 428
J 友元类和友元函数 429
J.1 友元类 429
J.2 友元函数 430
K 头文件的重复引用 431
L 小结 434