第一章 Visual C++概述 1
1.1 Visual C++系列的发展 1
1.2 Visual C++6.0的不同版本 1
1.2.1 标准版 1
目录 1
1.2.2 专业版 2
1.2.3 企业版 2
1.3 Visual C++6.0的新特性 2
1.3.1 MFC基础类库的改进与增强 2
1.3.2 数据库支持的增强 2
1.3.3 实用工具 3
1.3.4 向导 3
1.3.5 编译器、调试器与连接器 3
1.3.6 编辑器 3
1.4.1 Windows的消息机制 4
1.4.2 Windows的图形设备接口 4
1.4 Windows下的编程 4
1.4.3 Windows的内存管理 5
1.4.4 Windows的资源 5
1.4.5 动态连接库(DLLs) 5
1.5 小结 5
第二章 集成开发环境的使用 6
2.1 外观及基本操作 6
2.1.1 正文窗口及其操作 6
2.1.2 项目工作台窗口及其操作 7
2.1.3 输出窗口及其操作 8
2.2 菜单功能介绍 8
2.2.1 File菜单 8
2.2.2 Edit菜单 9
2.2.3 View菜单 11
2.2.4 Insert菜单 11
2.2.5 Project菜单 12
2.2.7 Tools菜单 13
2.2.6 Build菜单 13
2.2.8 Window菜单 14
2.2.9 Help菜单 15
2.2.10 Debug菜单 16
2.3 工具栏的使用 17
2.4 定制用户界面 18
2.4.1 显示/隐藏工具栏 18
2.4.2 设计自己的工具栏和菜单 19
2.4.3 定制实用程序工具 21
2.4.4 定制加速键 22
2.5 文本编辑器的使用 22
2.5.1 文件的管理 23
2.5.2 在文件中定位 24
2.5.3 对文件进行编辑 25
2.5.4 查找与替换 26
2.6.1 资源与资源编辑器 28
2.6 资源与标识符 28
2.6.2 标识符 29
2.7 小结 30
第三章 建立第一个应用程序 31
3.1 利用AppWizard创建一个新的项目 31
3.1.1 创建新的项目 31
3.1.2 第一步:选择程序的文档支持类型 32
3.1.3 第二步:选择程序的数据库支持类型 33
3.1.4 第三步:选择程序的复合文档支持类型 34
3.1.5 第四步:选择程序的界面选项 34
3.1.6 第五步:选择程序的其他选项 37
3.1.7 第六步:确认文件和类名 38
3.1.8 第七步:生成应用程序 38
3.1.9 编译和运行生成的应用程序 38
3.2 浏览程序代码 40
3.2.1 应用程序类——CFirstApp类 40
13.2.14 多表的连接 44
3.2.2 主框架类——CMainFrame类 46
3.2.3 文档类——CFirstDoc类 48
3.2.4 视类——CFirstView类 50
3.2.5 其他文件 52
3.3 让程序做些工作 52
3.3.1 命名法则 53
3.3.2 向类中添加成员 54
3.4 理解程序的运行 57
3.4.1 传统C语言应用程序的结构 57
3.4.2 MFC应用程序 62
3.5 小结 63
第四章 消息与命令 69
4.1 消息驱动机制 69
4.2 使用菜单工作 70
4.2.1 修改菜单资源 71
4.2.2 进行消息映射 74
4.2.3 添加代码 76
4.3 更新菜单状态 77
4.4 使用工具条 81
4.5 使用加速键 84
4.6 消息的传递 86
4.7 小结 87
第五章 绘图与文本 88
5.1 设备环境与图形对象 88
5.1.1 设备环境——CDC类 88
5.1.2 图形对象——CGdiObject类 91
5.2.1 客户区鼠标消息 92
5.2 鼠标消息的发送 92
5.2.2 非客户区鼠标消息 94
5.3 在屏幕上绘图 95
5.3.1 建立一个新的项目 95
5.3.2 添加菜单资源 96
5.3.3 使菜单工作 96
5.3.4 实现画点功能 101
5.3.5 实现画线功能 103
5.3.6 实现画矩形与画椭圆功能 109
5.3.7 实现填充功能 111
5.3.8 实现随手画功能 113
5.4 使用画笔和画刷 116
5.4.1 建立程序的框架 116
5.4.2 创建和使用不同的画笔 120
5.4.3 创建和使用不同的画刷 125
5.5 输出文本 127
5.5.1 字体 127
5.5.2 CDC类的文本处理函数 131
5.5.3 建立程序的框架 133
5.5.4 在OnDraw()函数中实现文本输出 138
5.6 小结 139
第六章 文档/视结构 140
6.1 分析一个应用程序 140
6.1.1 建立一个应用程序 141
6.1.2 程序运行的流程 141
6.1.3 框架窗口类 143
6.1.4 文档模板 144
6.1.5 文档类 144
6.1.6 视类 145
6.2.2 在文档中加入数据变量 147
6.2.1 单文档与多文档 147
6.2 单文档应用 147
6.1 8 小结 147
6.1.7 程序员的任务 147
6.2.3 在视中处理键盘输入 148
6.2.4 使用视类的GetDocument函数 149
6.2.5 将用户输入的字符存入文档 149
6.2.6 使用设备描述表显示文本 150
6.2.7 处理WM_CREATE消息 151
6.2.8 在屏幕上显示插入符 152
6.2.9 移动插入符 155
6.2.10 用DeleteContents函数进行数据清除 155
6.2.11 用OnNewDocument函数进行初始化 157
6.2.12 用鼠标定位插入符 157
6.2.13 项目CSingleDocl程序清单 160
6.3 多文档应用 167
6.3.1 建立一个多文档的应用 168
6.3.2 分析AppWizard产生的MDI框架程序 169
6.3.3 增强文本编辑器的功能 171
6.3.4 设置文档的修改标志 172
6.3.5 修改视类的OnDraw函数 174
6.4 多窗口应用 175
6.4.1 程序框架实现的功能 175
6.4.2 使文档和视保持一致 176
6.4.3 在OnChar函数中加入UpdateAllViews函数 177
6.4.4 修改视类的OnUpdate成员函数 177
6.4.5 视类的OnInitialUpdate函数 179
6.4.6 运行程序MultiDocl 179
6.4.7 程序清单 179
6.5 小结 184
7.1.1 创建一个项目MyFilel 186
第七章 文档序列化 186
7.1 CFile类 186
7.1.2 保存文件 187
7.1.3 载入文件 190
7.2 文档序列化的概念 193
7.3 自定义一个可序列化的类 193
7.3.1 从CObject中派生你的类 194
7.3.2 覆盖该类的Serialize成员函数 194
7.3.3 使用DECLARE_SERIAL宏 195
7.3.4 定义无参数的构造函数: 195
7.3.5 在实现文件中使用IMPLEMENT_SERIAL宏 195
7.4 序列化一个对象 196
7.4.1 什么是归档对象 196
7.4.2 创建一个归档对象 196
7.4.3 使用归档类的《和》运算符 197
7.4.4 通过归档存储和读取对象 199
7.5 在应用中实现文档序列化 201
7.5.1 应用程序框架实现的功能 201
7.5.2 重新定义文档类的函数Serialize 202
7.5.3 应用程序框架的工作内幕 205
7.5.4 定义文档类型 207
7.6 程序清单 210
7.7 小结 219
第八章 对话框与常用控件 220
8.1 有模式对话框的使用 220
8.1.1 建立项目ModalDialogl 221
8.1.2 资源与资源管理 222
8.1.3 使用资源编辑器来编辑对话框 224
8.1.4 向对话框中加入控件 226
8.1.5 加入对话框类和成员变量 233
8.1.6 代码规整 235
8.2 无模式对话框 246
8.2.1 建立Expl项目 246
8.2.2 修改项目资源 248
8.2.4 代码规整 249
8.2.3 为对话框指定新类和加入成员函数 249
8.2.5 进一步理解expl 257
8.3 小结 266
第九章 通用对话框与Windows95的新控件 267
9.1 通用对话框 268
9.1.1 CFileDialog类的使用 268
9.1.2 CPageSetupDialog类的使用 277
9.1.3 CPrintDialog类的使用 278
9.1.4 CFindReplaceDialog类的使用 280
9.1.5 COleDialog类的使用 282
9.2 Win95的新控件 283
9.2.1 一个能运行的项目 283
9.2.2 spin控件(微调按钮) 284
9.2.3 Progress Control(进度控件) 287
9.2.4 Slider Control(滑块控件) 290
9.2.5 Hot Key(热键控件) 293
9.2.6 Image List Control(图像列表控件) 296
9.2.7 List View Control(列表视图控件) 298
9.2.8 Tree Control(树形视图控件) 307
9.2.9 Rich Edit Control(多样式文本编辑控件) 311
9.2.10 Month Calendar Control(月历控件) 315
9.2.11 Tab Controls(标签控件) 316
9.2.12 运行程序 319
9.3 小结 331
第十章 打印与打印预览 332
10.1 基本打印与打印功能 332
10.2 改变映射模式 335
10.3 打印多页 338
10.3.1 设置矩形的数目 338
10.3.2 设置页数 340
10.3.3 设置每页的起点 343
10.4 MFC的打印进程 345
10.5 小结 347
第十一章 改进程序界面 348
11.1 控制条类 348
11.1.1 控制条 348
11.1.3 状态条 349
11.1.2 工具条 349
11.2 工具条和状态条 350
11.1.4 对话框条 350
11.1.5 集合条 350
11.2.1 缺省的工具条与状态条 351
11.2.2 创建自己的工具条 355
11.2.3 向状态条中添加指示器 365
11.3 对话框条 370
11.4 集合条 372
11.4.1 建立AdvBar程序框架 372
11.4.2 建立新的工具条 373
11.4.3 建立集合条 378
11.5.1 CD播放控制 382
11.5 动态修改菜单 382
11.5.2 动态修改菜单 386
11.5.3 使菜单活动起来 387
11.6 添加快捷菜单 389
11.6.1 添加快捷菜单 389
11.6.2 响应Track下拉按钮 390
11.7 小结 391
12.1.1 对象的链接与嵌入(Object Linking and Embedding) 392
第十二章 ActiveX技术 392
12.1 ActiveX基础知识 392
12.1.2 容器与服务器(Container and Server) 394
12.1.5 ActiveX自动化(ActiveX Automation) 395
12.1.3 复合文档(Compound Document) 395
12.1.4 Active文档(Active Document) 395
12.1.6 ActiveX控件(ActiveX Controls) 396
12.2 创建ActiveX容器应用程序 396
12.2.1 建立应用程序框架 396
12.2.2 框架代码的变化 397
12.2.3 移动与重设大小 409
12.2.4 处理多个对象 412
12.3 创建ActiveX服务器应用程序 418
12.3.1 建立应用程序框架 418
12.3.2 框架代码的变化 419
12.3.3 使TestMsgl程序工作 428
12.4 ActiveX控件 431
12.4.1 建立ActiveX控件框架 432
12.4.2 ControlWizard产生的代码 433
12.4.3 添加属性 437
12.4.4 添加方法 442
12.4.5 添加事件 444
12.5 小结 446
13.1.1 数据结构 447
第十三章 数据库编程 447
13.1 关系数据库模型 447
13.1.2 完整性规则 448
13.1.3 数据操作 449
13.1.4 结构化查询语言SQL(Structured Query Language) 449
13.2 使用ODBC 452
13.2.1 ODBC概述 452
13.2.2 ODBC的工作原理 453
13.2.3 MFC ODBC类 454
13.2.4 创建ODBC数据库应用程序 455
13.2.5 建立ODBC数据源 456
13.2.6 用AppWizard创建数据库应用程序School的框架 457
13.2.7 为数据库应用程序School创建视图 459
13.2.8 应用程序是如何工作的 462
13.2.9 遍历、添加、修改和删除记录 465
13.2.10 数据库异常 467
13.2.11 记录的筛选和排序 468
13.2.12 编程举例 468
13.2.13 统计函数的使用 474
13.2.15 统计函数、多表连接使用举例 475
13.2.16 直接使用SQL语句 480
13.2.17 使用CDatabase进行事务处理 481
13.3 使用DAO 482
13.3.1 DAO概述 482
13.3.2 MFC DAO类 482
13.3.3 创建DAO数据库应用程序 483
13.3.4 理解从CDaoRecordset派生的记录集类 486
13.3.5 DAO类的进一步介绍和使用 489
13.3.6 如何在ODBC和DAO中选择 500
13.4 其他数据库编程技术简介 500
13.4.1 OLE DB 500
13.5 小结 501
13.4.2 ADO 501
第十四章 Internet编程 502
14.1 WinInet(HTTP,FTP,Gopher)类编程简介 503
14.1.1 WinInet的特色 503
14.1.2 WinInet的优点 503
14.1.3 MFC的WinInet类 504
14.2 创建一个互连网客户应用程序 504
14.2.1 用AppWizard创建应用程序MyInternet1 504
14.2.2 编辑对话框资源 505
14.2.3 加入成员函数和成员变量 506
14.3.1 进行对话框的初始化 508
14.3.2 创建一个会话对象 508
14.3 HTTP应用 508
14.3.3 CInternetFile类 510
14.3.4 打开一个Internet文件 511
14.3.5 读取并显示文件 514
14.3.6 关闭文件 516
14.4 FTP应用 518
14.4.1 进行对话框的初始化 518
14.4.2 创建一个会话对象 518
14.4.3 建立一个FTP连接 518
14.4.4 获取文件列表 521
14.4.5 关闭连接 524
14.5 Gopher应用 526
14.5.1 进行对话框的初始化 526
14.5.2 创建一个会话对象 526
14.5.3 建立一个Gopher连接 527
14.5.4 使用Gopher定位器 529
14.5.5 在Gopher服务器上查找文件 532
14.5.6 使用CGopherFile类来操纵文件 532
14.5.7 关闭连接 535
14.5.8 清单程序 536
14.6 小结 546
1 CWinApp类 547
附录 MFC的常用类 547
2 CWnd类 548
3 CDocTemplate类 554
4 CView类 555
5 CDocument类 556
6 CFrameWnd类 557
7 CSplitterWnd类 558
8 CDC类 559
9 CGdiObject类 564
10 CControlBar类 564
12 CFile类 565
11 CObject类 565
13 CArchive类 566
14 CObList类 567
15 CString类 567
16 CMenu类 568
17 CDialog类 569
18 CPoint类 570
19 CSize类 571
20 CTime类 571
21 CInternetSession类 572
22 CInternetConnection类 572
23 CFileFind类 573
24 CGopherLocator类 574