第1章 简介Visual C++.NET窗口程序设计 2
1.1 窗口程序设计的基本概念 2
1.1.1 事件、消息与窗口运行 2
1.1.2 窗口的基本构造 2
第一篇 窗口程序设计基础 2
1.1.3 资源的概念 3
1.2 如何编写窗口程序 4
1.2.1 什么是应用程序框架 4
1.3.1 什么是集成程序开发环境 5
1.3.2 Visual C++.NET的画面介绍 5
1.2.2 立用程序框架与面向对象 5
1.3 强大的集成程序开发环境——Visual C++.NET 5
1.3.3 MFC的类继承结构 8
1.4 从Visual C++到Visual C++.NET 8
第2章 Hello MFC——窗口程序设计的初步体验 10
2.1 建立窗口程序的基本概念 10
2.2 第一个窗口程序——Hello MFC 11
2.2.1 建立Hello MFC 11
2.2.2 CWinApp类与程序入口点 16
2.2.3 窗口框架对象 17
第3章 Visual C++.NET的操作(一)——建立项目与程序编译/调试 22
3.1 项目的介绍 22
3.1.1 Visual C++.NET使用的文件 22
3.1.2 项目/方案的打开、关闭与保存 23
3.1.3 项目中文件的操作 24
3.2 编译程序 26
3.3.1 程序的调试 27
3.3 排除错误——程序的调试 27
3.3.2 暂停程序的执行 28
3.3.3 变量值的查看 31
3.4 帮助文件 33
第4章 自定义窗口框架与资源文件的运用 37
4.1 自定义窗口框架对象 37
4.2 MyFrame程序示例 37
4.3 自定义窗口框架类与资源文件 42
4.3.1 窗口框架对象的构建 42
4.3.2 自定义窗口框架与资源文件的建立 42
4.3.3 在窗口框架中建立菜单 43
第5章 窗口的消息处理 44
5.1 窗口消息的传递与处理 44
5.2 Message程序示例 46
5.3 消息映射与响应函数的建立 48
5.4 利用鼠标绘图 49
5.5 消息框的使用与窗口的关闭 51
第6章 窗口应用程序架构 54
6.1 什么是文档/视图架构 54
6.2.1 Doc View程序示例 55
6.2 以文档/视图为架构的窗口应用程序 55
6.2.2 文档/视图的架构与建立步骤 57
6.2.3 单文档模板类的应用 60
6.2.4 CView类与CDocument类的使用 62
6.3 文档/视图架构的应用 63
6.3.1 窗口的重绘 63
6.3.2 repaint程序示例 63
6.3.3 文档/视图架构的运作机制 65
6.3.4 窗口的重绘 67
7.1 资源编辑器的基本操作 70
第二篇 程序资源的建立与基本绘图原理 70
第7章 Visual C++.NET的操作(二)——资源编辑器的使用 70
7.2 菜单 72
7.3 图标、位图、光标 75
7.4 工具栏 79
7.5 对话框 81
7.6 字符串表 83
7.7 标识符的管理 84
7.8 快捷键 86
8.1 菜单的简介 87
第8章 菜单的建立 87
8.2 menu程序示例 89
8.3 菜单的建立与设置 95
8.4 菜单的切换 96
8.5 利用CMenu类控制菜单 96
8.6 修改系统菜单与建立快捷菜单 105
第9章 UPDATE_COMMAND_UI消息 108
9.1 什么是UPDATE_COMMAND_UI消息 108
9.2 COMMAND_UI程序示例 108
9.3 UPDATE_COMMAND_UI消息的接收与响应 111
9.4 UI组件的修改 112
第10章 快捷键、工具栏、状态栏与字符串表 113
10.1 快捷键的建立 113
10.1.1 accelerators程序示例 113
10.1.2 加载快捷键 115
10.2 工具栏、状态栏与字符串表的使用 116
10.2.1 简介工具栏、状态栏与字符串表 116
10.2.2 controlbar程序示例 116
10.2.3 工具栏的建立 120
10.2.4 状态栏的建立 124
第11章 图标、位图与鼠标指针资源 129
11.1 简介图标、位图与鼠标指针资源 129
11.2 图标、位图与鼠标指针资源的使用 130
11.2.1 resource程序示例 130
11.2.2 图标资源的使用 134
11.2.3 位图资源的使用 135
11.2.4 鼠标指针资源的使用 135
11.3.1 简介Painter窗口 137
11.3 创建Painter窗口 137
11.3.2 painter1程序示例 138
11.3.3 painter1的程序架构 143
11.3.4 painter1的自定义类说明 143
11.3.5 控制工具栏的隐藏与显示 146
第12章 基本绘图原理 148
12.1 窗口的基本绘图原理 148
12.1.1 绘图设备接口 148
12.1.3 颜色的定义 149
12.1.2 设备环境 149
12.1.4 MFC的GDI类 150
12.1.5 建立画笔对象 150
12.1.6 建立画刷对象 151
12.2 CDC类的介绍 152
12.2.1 CDC类的派生类 152
12.2.2 CDC类提供的形状绘制函数 152
12.3 画笔、画刷与绘图模式的控制 155
12.3.1 画笔与画刷的选取 155
12.3.2 绘图模式的控制 156
12.4.1 painter2的绘图功能 157
12.4 建立Painter的绘图功能 157
12.4.2 painter2程序示例 158
12.4.3 painter2的程序架构 165
12.4.4 painter2的自定义类说明 166
12.4.5 MyView类所处理的消息 172
12.4.6 Shape::draw的奥妙——动态链接的应用 177
第13章 图形对象的记录与重绘 179
13.1 记录图形对象与窗口重绘的机制 179
13.2 painter3程序示例 180
13.4 painter3的自定义类 189
13.3 窗口重绘的机制 189
13.5 形状对象的重绘机制 191
第三篇 深入应用程序架构 198
第14章 文件操作机制的建立 198
14.1 MFC的文件保存机制 198
14.2 painter4程序示例 199
14.3 painter4的自定义类 209
14.4 建立保存数据的序列化机制 210
14.5 建立文件操作功能 213
15.1 具有滚动条的窗口 216
第15章 具有滚动条的窗口与窗口部分重绘 216
15.2 ScrollView程序示例 217
15.3 可滚动范围的设置 220
15.4 客户区与文件间的坐标转换 222
15.5 重绘部分窗口 226
第16章 分割窗口 229
16.1 多窗口程序的建立 229
16.2 动态分割窗口的建立 230
16.2.1 如何动态分割窗口 230
16.2.2 DynaSplit程序示例 231
16.2.3 建立动态分割窗口 233
16.2.4 子窗口的同步更新 234
16.3 静态分割窗口的建立 237
16.3.1 如何建立静态分割窗口 237
16.3.2 StaticSplit程序示例 238
16.3.3 静态分割窗口的建立 249
16.3.4 建立查看整体画布的GlobalView类 251
16.3.5 子窗口的更新机制 254
17.1 如何建立MDI窗口程序 258
第17章 多文档窗口程序的建立 258
17.2 MDI程序示例 260
17.3 MDI窗口程序使用的资源 267
17.4 MDI窗口程序的InitInstance函数 268
17.5 CMDIFrame类的功能 272
17.6 主/子窗口框架对象的取得 275
第18章 文本编辑器的建立 277
18.1 Editor程序示例 277
18.2 多种文档编辑器 292
18.3.1 View类的建立 293
18.3 建立文本编辑器 293
18.3.2 Document类的建立 301
第19章 打印与预览 304
19.1 MFC的打印、预览打印机制 304
19.2 Print程序示例 306
19.3 建立打印机制需要加载的资源 315
19.4 坐标系统的转换 315
19.5 图文件与文字文件的打印及预览打印 319
19.5.1 图文件的打印与预览打印 319
19.5.2 文字文件的打印与预览打印 322
第20章 Visual C++.NET的操作(三)——程序快速开发工具的应用 323
20.1 辅助程序开发的工具 323
20.2 应用程序向导 324
20.2.1 应用程序向导的使用说明 324
20.2.2 应用程序向导所产生文件的说明 328
20.3 程序代码向导的使用 345
20.3.1 程序代码向导的用途 345
20.3.2 新建类 347
20.3.3 新建类的函数 349
20.3.4 新建类的属性 352
20.3.5 事件响应函数的建立 353
20.3.6 消息响应函数的建立 354
20.4 运用Visual C++.NET工具建立项目 355
第四篇 对话框、对话框应用程序及各种控件 358
第21章 模态对话框的建立 358
21.1 对话框简介 358
21.1.1 对话框的种类与功能 358
21.1.2 对话框组成 359
21.2 painter5程序示例 360
21.1.3 对话框资源与对话框对象 360
21.3 painter5的自定义类 373
21.4 painter5的架构 373
21.5 SWidthDlg对话框类 375
21.6 模态对话框对象的建立 381
第22章 对话框的数据交换与检查机制 383
22.1 DDX与DDV机制 383
22.2 painter6程序示例 384
22.3 DDX与DDV机制的建立 395
22.4 数据交换与检查机制 396
22.5 DDX与DDV函数的说明 398
第23章 非模态对话框 401
23.1 非模态对话框的建立 401
23.2 painter7程序范例 401
23.3 painter7的自定义类 415
23.4 非模态对话框的建立 416
23.5 数据交换机制 420
23.6 其他更改的部分 422
24.1.2 建立对话框类 423
24.1.1 程序代码向导建立对话框类的机制 423
24.1 快速建立对话框类 423
第24章 Visual C++.NET的操作(四)——对话框类的建立 423
24.1.3 建立数据交换与检查机制 425
24.1.4 其他相关资源的建立 426
24.2 快速建立对话框应用程序 429
第25章 对话框应用程序与控件的使用 437
25.1 对话框应用程序的使用 437
25.2 Button控件与Static Text控件 437
25.2.1 Button控件与Static Text控件简介 437
25.2.2 计算器程序示例 438
25.2.3 OnCommand消息的响应 448
25.2.4 OnBnClickedClear函数 453
25.3 Picture控件 454
25.3.1 Timer(小时钟)程序示例 454
25.3.2 WM_TIMER消息的使用 464
25.3.3 系统时间的取得与CTime对象的使用 465
25.4 List Box、Combo Box控件与多页对话框的建立 467
25.4.1 List Box、Combo Box与多页对话框简介 467
25.4.2 ListProperty程序示例 468
25.4.3 多页对话框的建立 485
25.4.4 List Box的操作 489
25.4.5 Combo Box的操作 491
25.5 Scroll Bar、Slider、Spin、Edit Box控件与Check Box控件 493
25.5.1 滚动类控件简介 493
25.5.2 Edit Box与Check Box简介 495
25.5.3 SldCtrl程序示例 495
25.5.4 各控件间的关系 507
25.5.5 初始状态的设置 508
25.5.6 WM_HSCROLL与WM_VSCROLL消息 510
25.5.7 Slider与Scroll Bar的滚动 510
25.5.8 Edit Box的EN_CHANGE事件 513
25.5.9 Check Box的BN_CLICKED消息 514
25.6 树状控件、列表控件与单选按钮 515
25.6.1 树状控件、列表控件与单选按钮简介 515
25.6.2 DirView程序示例 516
25.6.3 文件信息的取得 531
25.6.4 Image List对象的建立 537
25.6.5 树状控件的建立 538
25.6.6 列表控件的建立 544
25.6.7 单选按钮的使用 551
第26章 文件对话框与颜色对话框的应用 554
26.1 文件对话框的应用 554
26.1.1 文件对话框的类型与应用 554
26.1.2 FDialog程序示例 555
26.1.3 文件对话框的建立与使用 560
26.2.1 利用颜色对话框设置颜色 564
26.2.2 CDialog程序示例 564
26.2 颜色对话框的应用 564
26.2.3 颜色对话框的建立与使用 566
第五篇 网络及数据库程序设计 570
第27章 进程与线程的概念 570
27.1 什么是进程与线程 570
27.2 Thread程序示例 571
27.3 建立工作者线程 583
27.3.1 建立线程函数 583
27.3.2 子线程的产生 586
27.4.2 暂停/恢复线程的执行 588
27.4.1 暂停间隔的设置 588
27.4 线程的执行 588
27.4.3 优先执行权的设置 590
27.4.4 检查线程的执行状态 591
27.5 中断线程的执行 592
27.6 自定义线程的结束执行消息 594
第28章 FTP程序的编写 597
28.1 以MFC编写网络程序 597
28.1.1 因特网的简介 597
28.1.2 MFC中与建立网络程序的相关类 598
28.2 FTP程序示例 599
28.3 FTP连接的建立与中断 619
28.3.1 FTP联机的建立 619
28.3.2 联机错误的处理机制 623
28.3.3 FTP联机的中断 625
28.4 取得服务器端的文件资料 627
28.5 利用线程执行文件下载 633
第29章 一个简单的浏览器 638
29.1 简介CHtmlView 638
29.2 HViewer程序示例 638
29.3 CHtmlView类的介绍 648
第30章 MFC与数据库 654
30.1 数据库管理系统的建立 654
30.1.1 简介数据库管理系统 654
30.1.2 数据库操作程序的观念 654
30.2 ODBC程序范例 656
30.2.1 建立数据库 656
30.2.2 建立ODBC连接 658
30.2.3 建立ODBC程序范例 660
30.3.1 记录集类的定义与RFX机制 674
30.3 RFX数据交换机制 674
30.3.2 取得RFX机制的数据源 677
30.4 CRecordset类的使用 677
30.4.1 建立/打开CRecordset对象 677
30.4.2 数据的新增/删除/修改 680
30.4.3 设置数据筛选条件与排序方式 682
30.5 CDatabase类的使用 684
30.5.1 CDatabase对象的打开与关闭 684
30.5.2 执行SQL语句 685
附录A 本书所使用MFC函数索引 688