第一部分 开始学习Visual C++5 1
第1章 Visual C++5简介 1
1.1 探讨Visual C++5 1
1.1.1 Visual C++5开发环境 2
1.1.2 Developer Studio工具 2
1.1.3 Developer Studio Wizards 2
1.1.4 MFC库 3
1.2 启动Developer Studio 3
1.2.1 探讨InfoViewer 4
1.2.3 使用编辑器命令 5
1.2.2 Visual C+ +5编辑器 5
1.3 创建第一个C++程序 6
1.3.1 开始第一个程序 6
1.3.2 编辑每个C+ +源文件 6
1.3.3 保存一个源文件 7
1.3.4 联编Hello项目 8
1.3.5 运行第一个C+ +程序 8
1.4 用AppWizard创建Windows程序 8
1.4.1 用AppWizard联编Windows应用程序 9
1.4.2 探讨HelloMFC App Wizard工程 10
1.4.3 用MFC处理输出 10
9.5 问答 11
1.7.2 练习 12
1.6 问答 12
1.5 总结 12
1.7 复习 12
1.7.1 小测验 12
第2章 编写简C+ +程序 13
2.1 C+ +程序的公用元素 13
2.1.1 基本的C+ +数据类型 13
2.1.2 理解类型安全 14
2.1.3 使用不同的变量类型 15
2.1.4 变量命名 16
2.1.5 给变量赋值 17
2.2 一个简单的C + +程序 17
2.2.1 创建Hello2工程 18
2.2.2 创建程序的源文件 18
2.2.3 运行Hello2程序 19
2.2.4 分析Hello2程序 19
2.3 总结 21
2.4 问答 21
2.5 复习 22
2.5.1 小测验 22
2.5.2 练习 22
第3章 结构、类和MFC类库 23
3.1.2 定义函数 23
3.1 使用函数 23
3.1.1 声明函数的类型 23
3.1.3 调用函数 24
3.2 什么是结构 25
3.3 什么是类 26
3.3.1 类与实例 26
3.3.2 构造函数 26
3.3.3 析构函数 27
3.4 使用MFC进行Windows编程 27
3.4.1 Hello Win MFC示例 27
3.4.2 联编Hello Win实例 28
3.5 Windows程序的公用元素 29
3.5.1 窗口无所不在 29
3.5.2 客户区非客区 29
3.5.3 消息和函数 30
3.6 语句和表达式 30
3.6.1 语句 30
3.6.2 声明 30
3.6.3 赋值 30
3.6.4 其他公用表达式和运算符 31
3.9 问答 32
3.8 总结 32
3.7 矩形和区域 32
3.10 复习 33
3.10.1 小测验 33
3.10.2 练习 33
4.1.1 为什么要用面向对象设计 35
4.1.2 在类中找描述对象 35
4.1 什么是面向对象设计 35
第4章 对话框和C+ +类 35
第二部分 对话框和基本控件 35
4.2 什么是对话框 36
4.2.1 理解消息对话框 36
4.2.2 使用对话框用于输入 36
4.3 如何使用对话框 37
4.3.1 增加消息框 37
4.3.2 使用位“或”(or)运算 38
4.3.3 增加对话框 39
4.3.4 增加静态文本控件 41
4.3.5 为对话框创建类 42
4.3.6 为WM_INITDIALOG增加消息处理函数 43
4.3.7 为新对话框增加菜单选择 43
4.4 创建基于对话框的工程 45
4.4.1 AppWizard支持基于对话框的工程 45
4.4.2 探讨HelloDiaolg AppWizard工程 46
4.4.3 使用对话框编辑器 46
4.5 总结 46
4.6 问答 46
4.7 复习 47
4.7.1 小测验 47
4.7.2 练习 47
5.1.1 用选择语句选择一条执行路径 48
5.1 什么是条件表达式 48
第5章 按钮控件 48
5.2.1 什么是下压按钮 51
5.2 什么是按钮 51
5.2.5 MFC对按钮支持 52
5.2.6 使用按钮的一个示例 52
5.2.2 什么是单选按钮 52
5.2.4 什么是分组框 52
5.2.3 什么是复选按框 52
5.3 将按钮控件绑定Cbutton对象上 54
5.3.1 向对话框类增加按钮事件 55
5.3.2 改变按钮的标签 56
5.3.3 激活和禁用按钮 56
5.3.4 隐藏按钮 57
5.4 定义和设置Tab键次序 58
5.7.1 小测验 59
5.7.2 练习 59
5.7 复习 59
5.6 问答 59
5.5 总结 59
6.1 标识符和作用域和生存期 60
6.1.1 使用不同的作用或类型 60
第6章 使用编辑控件 60
6.1.2 理解标识符生存期 62
6.2 理解编辑控件 63
6.2.1 为什么使用编辑控件 63
6.2.2 MFC对编辑控件的支持 63
6.2.3 联编一个SDI测试工程 64
6.2.4 向对话框增加编辑控件 64
6.3 编辑控件属性 65
6.4 给编辑控件绑定一个Cedir对象 66
6.5 从编辑控件获取输入文本 66
6.6.2 怎样使用DDV和DDX例程 67
6.6 使用DDV和DDX例程向对话框传递参数 67
6.6.1 为什么使用DDV和DDX例程 67
6.6.3 把控件的值与成员变量关联 68
6.8 问答 69
6.6.4 使用DDX函数交换编辑控件消息 69
6.7 总结 69
6.9 复习 70
6.9.1 小测验 70
6.9.2 练习 70
第7章 使用列表框和组合框控件 71
7.1 使用循环 71
7.1.1 使用while循环 71
7.1.2 使用do_while循环 71
7.1.3 使用for循环 72
7.2 什么是列表框(list Box) 73
7.2.1 为什么使用列表框 73
7.2.2 MFC对话框的支持 73
7.2.3 给对话框增加一个列表框 73
7.3 列表框属性 74
7.3.2 为列表框增加一个条目 75
7.3.1 使用CListBox 75
7.3.3 从列表框删除条目 76
7.3.4 接收列表框消息 76
7.4 组合框 77
7.4.1 MFC对组合框的支持 77
7.4.2 组台框属性 78
7.4.3 一个组合框实例 79
7.5 总结 81
7.6 问答 82
7.7 复习 82
7.7.1 小测验 82
7.7.2 练习 82
8.1 Windows编辑模式简介 83
8.2 在Document/View中使用AppWizard 83
第8章 消息和事件驱动程序 83
第三部分 Windows和MFC结构 83
8.2.1 Document/View结构简单回顾 84
8.2.2 用AppWizard创建的应用程序类型 84
8.2.3 使用AppWizard创建一个SDI应用程序 85
8.3 消息 85
8.3.1 调试鼠标单击的程序 86
8.3.2 消息队列 86
8.3.3 消息处理的机制 87
8.4 用ClassWizard处理消息 87
8.4.1 Mouse Tst处理消息 88
8.4.2 更新CmouseTst视图类 88
8.4.3 运行Mouse Tst 90
8.5 MFC基类 91
8.5.1 Cobject基类 91
8.5.2 CWnd基类 91
8.5.3 使用Cobject和CWnd基类的一个实例 92
8.6 总结 96
8.8.2 练习 96
8.7 问答 96
8.8.1 小测验 96
8.8 复习 96
第9章 Docurnent/View结构 97
9.1 Visual C+ +对Docurnent/View的支持 97
9.1.1 SDI和MDI应用程序 98
9.1.2 为什么使用Docurnent/View 98
9.1.3 使用AppWizard 98
9.1.4 使用CiassWizard 99
9.2 指针和引用 100
9.2.1 怎样使用指针 101
9.2.2 间接和地址运算符 101
9.2.3 使用间接运算符 101
9.2.4 使用引用 103
9.2.5 使用new和delete来创建动态对象 104
9.2.6 使用new[ ]和dclctc[ ]来创建数组 105
9.2.8 使用指针指向基类 106
9.2.9 使用虚拟函数 106
9.2.7 指针用于派生类 106
9.3 探讨Document/View接口 107
9.3.1 创建数据模型 108
9.3.2 初始化文档内容 109
9.3.3 取得文档指针 110
9.4 总结 111
9.6 复习 112
9.6.1 小测验 112
9.6.2 练习 112
第10章 菜单 113
10.1 什么是菜单 113
10.1.1 命令消息传递 114
10.2.2 编辑菜单资源 115
10.2.1 打开菜单资源 115
10.1.2 MFC菜单支持 115
10.2 增加新的菜单条目 115
10.2.3 菜单条目属性 116
10.2.4 增加一个消息处理函数 117
10.3 创建一个快捷菜单 117
10.3.1 创建资源 117
10.3.2 增加消息处理函数 118
10.3.3 捕捉消息 119
10.4 使用键盘加速键 121
10.4.1 显示键盘加速键资源 121
10.4.2 增加键盘加键 122
10.4.3 键盘加速键实例 122
10.5 总结 122
10.7.2 练习 123
10.7.1 小测验 123
10.7 复习 123
10.6 问答 123
第四部分 图形接口 125
第11章 设备环境 125
11.1 什么是设备环境 125
11.1.1 GDI对象的类型 125
11.1.2 设备环境类型 126
11.1.3 硬件不相关 126
11.2 怎样使用设备环境的支持 126
11.2.1 Windows对设备环境的支持 127
11.2.2 选择一个GDI对象 127
11.3 储备对象 128
11.4 DCTest:一个设备环境实例 129
11.4.1 创建映射方式对话框 129
11.4.2 设置映射模式 130
11.4.3 从设备环境获取消息 132
11.5 在Windows应用程序中使用颜色 134
11.6 总结 135
11.7 问答 135
11.8 复习 136
11.8.1 小测验 136
11.8.2 练习 136
第12章 使用笔和笔刷 137
12.1 什么是笔 137
12.1.1 MFC对笔的支持 137
12.1.2 使用装饰笔 138
12.1.3 使用几何笔 138
12.1.4 使用Cpen类 138
12.1.5 使用储备笔 139
12.2 用笔绘画的实例 140
12.2.1 修改Mapping Mode对话框 140
12.2.2 修改CDCTest View类 140
12.2.3 修改CDCTest View成员函数 141
12.3 什么是笔刷 143
12.3.1 MFC对笔刷的支持 144
12.3.2 笔刷和阴影样式 144
12.3.3 使用CBrush类 145
12.3.4 逻辑刷 146
12.3.5 使用储备笔刷 146
12.3.6 使用Common Color对话框 147
12.3.8 处理WM_CTLOLOR消息 149
12.3.10 地CDCTest View成员函数的改变 150
12.3.9 更新CDCTest View类 150
12.4 总结 152
12.5 问答 152
12.6 复习 153
12.6.1 小测验 153
12.6.2 练习 153
第13章 字体 154
13.1 什么是字体 154
13.2.1 字体的高度和宽度 155
13.2 确定字体属性 155
13.2.2 字体字符集 156
13.2.3 影响字体输出的属性 156
13.2.4 字体间距和族属生 157
13.2.5 字体粗细 157
13.2.6 其他的字体属性 158
13.3 为Windows程序创建字体 158
13.3.1 用CF???创建字体 158
13.3.2 用LOGFONT结构生成字体 159
13.4 选择和配置合适的字体 160
13.4.1 储备字体对象 160
13.4.2 为窗口设置字体 160
13.4.3 使有用公共体对话框 161
13.5 总结 163
13.7.2 练习 164
13.7.1 小测验 164
13.7 复习 164
13.6 问答 164
第14章 图标与光标 165
14.1 什么是图际 165
14.2 用图像编辑器创建图标 165
14.2.1 插入一个新图标资源 166
14.2.2 装载图标 166
14.2.3 改变程序的图标 166
14.2.4 从图像列表中检索图标 167
14.2.5 在按钮上显示一个图标 167
14.3 什么是光标 169
14.4 在Windows程序中使用光标 170
14.4.1 创建光标资源 170
14.4.2 给光标加一热点 170
14.4.3 改变光标 171
14.4.4 有条件改地变光标 171
14.4.5 使用标准光标 172
14.4.6 把光标变成沙漏 173
14.4.7 裁剪光标 175
14.5 总结 175
14.6 问答 175
14.7 复习 176
14.7.1 小测验 176
14.7.2 练习 176
第15章 使用位图 177
15.1 什么是位图 177
15.1.1 Visual C+ +对位图的支持 177
15.1.2 在一个示例工程中加入位图 177
15.1.3 装入及显示位图 178
15.2 DDB与DIB的比较 179
15.2.1 DDB问题 179
15.2.2 DIB的处理 180
15.2.5 Windows调色板简介 181
15.2.4 256色DIB 181
15.2.3 DIB图像数组 181
15.2.6 系统调色板 183
15.3 Dib实例 183
15.3.1 CDIBitrnap类 183
15.3.2 CBmpPalette类 187
15.3.3 CdibDoc类的变化 189
15.3.4 主框架类的改变 190
15.3.5 CDibView类的改变 191
15.4 总结 193
15.5 问答 193
15.6 复习 194
15.6.1 小测验 194
15.6.2 练习 194
16.1 公共控件概览 195
16.1.1 使用UP Down控件 195
第16章 UP Down控件、进程和滑杆控件 195
第五部分 公共控件 195
16.1.2 示例程序 196
16.1.3 在对话框内添加UP Down控件 196
16.1.4 UP Down控件的属性 196
16.1.5 增加相关控件 197
24.4 测ActiveX控件 197
16.2 使用滑杆控件 198
16.1.7 改变UP Down控件的工作 198
16.1.6 使用CspinButton类 198
16.2.1 确定何时使用滑杆控件 199
16.2.2 滑杆控件的属性 199
16.3 使用进程控件 200
16.3.1 用滑杆控件更新进程控件 200
16.3.2 初始化滑杆控件和进程控件 201
16.3.3 从滑杆控件到进程控件的消息处理 201
16.6.2 练习 202
16.6.1 小测验 202
16.6 复习 202
16.4 总结 202
16.5 问答 202
第17章 使用图像列表和位图 203
17.1 什么是图像列表 203
17.2 怎样使用图像列表 204
17.2.1 创建一个图像列表 204
17.2.2 用ClmageList::Draw函数显示图像列表 206
17.2.3 显示透明图像 208
17.2.4 显示覆盖图像 208
17.5.1 小测验 209
17.3 总结 209
17.5 复习 209
17.4 问答 209
17.5.2 练习 210
第18章 列表查看控件 211
18.1 什么是列表查看控件 211
18.2.2 在ListEx对话框内添加控件 212
18.2 列表查看控件的属性 212
18.2.1 列表查年看控件实例 212
18.2.3 关联图像列表和列表控件 213
18.2.4 创建图像列表 214
18.2.5 在列表查看控件中添加条目 214
18.2.6 插入列表查看条目 215
18.2.7 增加报表查看的列消息 215
18.2.8 决定所选的条目 216
18.2.9 ClistExDlg类的修改 216
18.2.10 改变列表查年看控件的当前查看方式 218
18.2.11 转换查看类型 218
18.2.12 就地编辑条目 219
18.3 总结 221
18.4 问答 221
18.5.2 练习 222
18.5.1 小测验 222
18.5 复习 222
第19章 树查看 223
19.1 什么是树查看控件的支持 223
19.3 用树查看控件作为视图 224
19.3.1 在CtreeView中添加条目 224
19.2 MFC对树查看控件作为视图 224
19.3.2 运用树查看控件的类型 225
19.4 在对话框内添加树查看控件 226
19.5 设置树查看控件的属性 227
19.6 创建一个图像列表控件 228
19.7 修改对话框类 228
19.8 从树查看控件中删除条目 229
19.9 树查看控件通知 231
19.9.1 在树查看控件中增加施放功能 231
19.9.2 实现内部标签编辑 234
19.10 总结 234
19.12.2 练习 235
19.12 复习 235
19.12.1 小测验 235
19.11 问答 235
第20章 使用ActiveX控件 236
20.1 什么是ActiveX控件 236
20.2 为什么要使用ActiveX控件 236
20.3 怎样使用ActiveX控件 236
20.3.1 使用组件和控件库 237
20.3.2 在对话框编辑器内添加ActiveX控件 238
20.3.3 用Class Wizard配置ActiveX控件 238
20.4 使用ActiveX自定义控件的实例 238
20.4.1 什么是栅格控件 238
20.4.2 在对话框编辑器内添加栅格ActiveX控件 239
20.4.3 在主对话框内加入栅格控件 239
20.4.4 初始化栅格控件事件 240
20.4.5 检测栅格控件事件 241
20.4.6 重新计算栅格控件的内容 243
20.7 复习 244
20.7.1 小测验 244
20.7.2 练习 244
20.5 总结 244
20.6 问答 244
第六部分 高级MFC编辑 245
第21章 打印 245
21.1 什么是Windows程序的打印 245
21.1.1 了解MFC打印过程 246
21.1.2 创建MFC打印实例 246
21.1.3 探索CprintInfo类 247
21.1.4 使用OnPreparePrinting函数 247
21.1.8 使用OnEndPrinting函数 248
21.1.9 查询打印设备环境 248
21.1.7 使用OnPrint函数 248
21.1.6 使用OnPrint函数 248
21.1.5 使用OnBeginPringtng函数 248
21.2 给MFCPrint增加更多的功能 249
21.2.1 MFCPrint View构造函数与析构函数 249
21.2.2 在OnBeginPrinting函数内分配资源 250
21.2.3 在OnPreparcDC函数内处量多个页面 251
21.2.4 修改MFCrint OnPrint函数 252
21.3 总结 254
21.2.5 用OnEndpRrinting函数释放资源 254
21.4 问答 255
21.5 复习 255
21.5.1 小测验 255
21.5.2 练习 255
第22章 序列化 256
22.1 什么是序列化 256
22.2 为什么使用序列化 256
22.3.2 用于序列化的MFC类 257
22.3.1 序列化Customers工程 257
22.3 一个Document/View序列化实例 257
22.3.3 使用插入和提取运算符 258
22.3.4 使用序列化宏 259
22.3.5 重载Serialize函数 260
22.3.6 创建可序列化的集合 261
22.4 什么是Document/View序列化 262
22.5 Document/View应用程序怎样被序列化 262
22.5.1 创建一新文档 263
22.5.2 存储文档 263
22.5.3 关闭文档 264
22.5.4 装载文档 264
22.6 总结 269
22.7 问答 269
22.8 复习 269
22.8.1 小测验 269
22.8.2 练习 270
第23章 高级视图 271
23.1 什么是表单视图 271
23.1.2 使用表单视图 272
23.1.3 为表单视图创建对话框资源 272
23.1.1 视图的其他类型是什么 272
23.1.4 向工程增加一个表单视图类 273
23.1.5 使用CfomView取代Cview 273
23.1.6 在表单视图中处理事件和消息 274
23.1.7 处理OnInitialUpdate 275
23.1.8 防止视图类被改变大小 277
23.2 使用多视图 278
23.2.1 怎样使用多视图 278
23.2.2 创建新视图 279
23.2.3 修改OnDraw函数 279
23.2.4 创建和维护多文档模板 280
23.2.5 增加共享资源 281
23.2.6 为新视图增加菜单选项 283
23.2.7 更新多视图 284
23.2.8 增加OnlnitialUpdate和OnUpdate成员函数 285
23.3 总结 287
23.4 问答 287
23.5 复习 287
23.5.1 小测验 287
23.5.2 练习 288
第24章 创建ActiveX控件 289
24.1 什么是ActiveX控件 289
24.2 ActiveX控件的属性、事件和方法 289
24.2.1 属性 289
24.2.2 事件 290
24.2.3 方法 290
24.3 一个ActiveX控件实例 290
24.3.1 创建工程 291
24.3.3 绘制控件 292
24.3.2 MFC支持ActiveX 292
24.3.4 为OleEdit定义属性 293
24.3.5 处理字符输入 296
24.3.6 修改控件的位图 297
24.4.1 为控件选择测试容器 297
24.4.2 使用TSTCON32测试容器 297
24.4.3 测试属性 298
24.5 总结 299
24.6 问答 299
24.7 复习 299
24.7.1 小测验 299
24.7.2 练习 300
第七部分 附录 301
附录A Developer Studio IDE 301
附录B 小测验答案 305