第0章 写在前面 3
0-1 本书特点 3
0-2 本书导读 4
0-3 本书范例操作说明 6
第一篇 视窗程序设计基础 13
第1章 简介视窗程序设计 13
1-1 视窗程序设计的基本观念 13
1-1-1 事件、信息与视窗运作 13
1-1-2 视窗的基本构造 13
1-1-3 资源的观念 14
1-2 如何撰写视窗程序 15
1-2-1 什么是Application Frameworks 15
1-2-2 AF与对象导向 16
1-3 强大的整合程序开发环境——Visual C++ 16
1-3-1 什么是整合程序开发环境 16
1-3-2 Visual C++的画面介绍 17
1-3-3 MFC的类别继承阶层 19
第2章 Hello MFC!——视窗程序设计的初体验 23
2-1 建立视窗程序的基本观念 23
2-2 你的第一个视窗程序——Hello MFC 23
2-2-1 建立你的Hello MFC 23
2-2-2 CwinApp类别与程序进入点 29
2-2-3 视窗框架对象 30
第3章Visual C++的操作(一)——工程建立与程序编译/除错 37
3-1 工程的介绍 37
3-1-1 工程文件的介绍 37
3-1-2 工程的开启、关闭、储存 38
3-1-3 工程中文件的操作 39
3-2 编译程序 41
3-3 虫虫危机——程序的除错 41
3-3-1 程序的除错 41
3-3-2 暂停程序的执行 42
3-3-3 变量值的观察 45
3-4 如何利用Help 46
第4章 自定义视窗框架与资源文件的应用 53
4-1 自定义视窗框架对象 53
4-2 MyFrame程序范例 53
4-3 自定义视窗框架类别与资源文件 58
4-3-1 视窗框架对象的建立时机 58
4-3-2 自定义视窗框架与资源文件的建立 58
4-3-3 在视窗框架中建立菜单 59
第5章 视窗的信息处理 63
5-1 视窗信息的传递与处理 63
5-2 Message程序范例 65
5-3 信息映射表与响应函数的建立 68
5-4 利用鼠标绘图 69
5-5 信息框的使用与视窗的破坏 71
第6章 视窗应用程序架构 77
6-1 什么是DOC/View架构 77
6-2-1 Doc-View程序范例 78
6-2 以Document/View为架构的视窗应用程序 78
6-2-2 DOC/View的架构与建立步骤 80
6-2-3 单文件样版类别的应用 84
6-2-4 Cview类别与CDocument类别的使用 87
6-3 DOC/View架构的应用 88
6-3-1 视窗的重绘 88
6-3-2 repaint程序范例 88
6-3-3 DOC/View的运作机制 91
6-3-4 视窗的重绘 93
第二篇 程序资源的建立与基本绘图原理 99
第7章 Visual C++的操作(二)——资源编辑器的使用 99
7-1 资源编辑器的基本操作 99
7-2 菜单 100
7-3 图标、点阵图、光标 103
7-4 工具栏 106
7-5 对话框 108
7-7 识别字的管理 111
7-6 字符串表 111
7-8 快捷键 113
第8章 菜单的建立 117
8-1 简介菜单 117
8-2 menu程序范例 120
8-3 菜单的建立与设定 127
8-4 菜单的切换 128
8-5 利用CMenu类别控制菜单 128
8-6 修改系统菜单与建立弹出式菜单 139
第9章 UPDATE-COMMAND-UI信息 145
9-1 什么是UPDATE-COMMAND-UI信息 145
9-2 COMMAND-UI程序范例 145
9-3 UPDATE-COMMAND-UI信息的接收与响应 149
9-4 UI组件的修改 149
10-1 快捷键的建立 153
10-1-1 accelerators程序范例 153
第10章 快捷键、工具栏、状态栏与字符串表 153
10-1-2 载入快捷键表 154
10-2 工具栏、状态栏与字符串表的使用 155
10-2-1 简介工具栏、状态栏与字符串表 155
10-2-2 controlbar程序范例 156
10-2-3 工具栏的建立 160
10-2-4 状态栏的建立 166
11-1 简介图标、点阵图与光标资源 175
第11章 图标、点阵图与光标资源 175
11-2 图标、点阵图与光标资源的使用 176
11-2-1 resource程序范例 176
11-2-2 图标资源的使用 180
11-2-3 点阵图资源的使用 181
11-2-4 光标资源的使用 182
11-3 建立Painter的视窗界面 184
11-3-1 简介Painter的视窗界面 184
11-3-2 Painter1程序范例 185
11-3-3 Painter1的程序架构 191
11-3-4 Painter1的自定义类别说明 192
11-3-5 控制工具栏的隐藏与显示 194
第12章 基本绘图原理 199
12-1 视窗的基本绘图原理 199
12-1-1 绘图装置界面(Graphics Device Interface) 199
12-1-2 装置驱动(Device Context) 199
12-1-3 颜色的定义 200
12-1-4 MFC的GDI类别 201
12-1-5 建立画笔对象 202
12-1-6 建立画刷对象 203
12-2 CDC类别的介绍 204
12-2-1 CDC类别的衍生类别 204
12-2-2 CDC类别提供的形状绘制函数 204
12-3 画笔、画刷与绘图模式的控制 208
12-3-1 画笔与画刷的选取 208
12-3-2 绘图模式的控制 210
12-4 建立Painter的绘图功能 211
12-4-1 Painter2的绘图功能 211
12-4-2 Painter2程序范例 212
12-4-3 Painter2的程序架构 222
12-4-4 Painter2的自定义类别说明 223
12-4-5 MyView类别所处理的信息 228
12-4-6 Shape::draw的玄机——动态连接的应用 233
第13章 图形对象的记录与重绘 237
13-1 记录图形对象与视窗重绘的机制 237
13-2 Painter3程序范例 238
13-3 视窗重绘的机制 250
13-4 Painter3的自定义类别 250
13-5 形状对象的重绘机制 252
第三篇 深入应用程序架构 261
第14章 文件操作机制的建立 261
14-1 MFC的文件储存机制 261
14-2 Painter4程序范例 262
14-3 Painter4的自定义类别 275
14-4 建立储存资料的Serialize机制 276
14-5 建立文件操作功能 280
第15章 滚动条视窗与部分视窗重绘 285
15-1 具有滚动条的视窗 285
15-2 Scrollview程序范例 285
15-3 可滚动范围的设定 289
15-4 客户区与文件间的坐标转换 292
15-5 重绘部分视窗 298
第16章 分裂视窗 303
16-1 多视窗程序的建立 303
16-2 动态分裂视窗的建立 304
16-2-1 如何动态分裂视窗 304
16-2-2 DynaSplit程序范例 304
16-2-3 建立动态分裂视窗 308
16-2-4 子视窗的同步更新 309
16-3-2 StaticSplit程序范例 313
16-3 静态分裂视窗的建立 313
16-3-1 如何建立静态分裂视窗 313
16-3-3 静态分裂视窗的建立 327
16-3-4 建立查看整体画布的Global View类别 330
16-3-5 子视窗的更新机制 334
第17章 多文件视窗程序的建立 341
17-1 如何建立MDI视窗程序 341
17-2 MDI程序范例 343
17-3 MDI视窗程序使用的资源 350
17-4 MDI视窗程序的Initinstance函数 351
17-5 CMDIFrame类别已完成的程序机制 356
17-6 主\子视窗框架对象的取得 359
第18章 文字编辑器的建立 365
18-1 Editor程序范例 365
18-2 多种文件编辑器 385
18-3-1 View类别的建立 386
18-3 建立文字编辑器 386
18-3-2 Document类别的建立 396
第19章 打印与预览 403
19-1 MFC的打印、预览打印机制 403
19-2 Print程序范例 405
19-3 建立打印机制需要载入的资源 416
19-4 坐标系统的转换 416
19-5 图与文本文件的打印与预览打印 421
19-5-1 图的打印与预览打印 421
19-5-2 文本文件的打印与预览打印 425
第20章 Visual C++的操作(三)——程序快速开发工具的应用 429
20-1 辅助程序开发的聪明工具 429
20-2 AppWizard的介绍 430
20-2-1 AppWizard的使用说明 430
20-2-2 AppWizard所产生文件的说明 436
20-3-1 简介ClassWizard 463
20-3 ClassWizard的使用 463
20-3-2 Message Maps标签 464
20-3-3 ClassWizard之Message标签的操作示范 467
20-4 WizardBar的简介 473
20-5 用Visual C++工具建立程序 480
20-5-1 Visual C++工具的综合应用 480
20-5-2 利用WizardBar新增类别 481
20-5-3 利用WizardBar新增函数 484
20-5-4 利用ClassWizard新增信息响应函数 488
第四篇 对话框、对话框应用程序与各种控制项 495
第21章 Modal对话框的建立 495
21-1 简介对话框 495
21-1-1 对话框的种类与功能 495
21-1-2 对话框组成 496
21-1-3 对话框资源与对话框对象 496
21-2 Painter5程序范例 496
21-3 Painter5的自定义类别 513
21-4 Painter5的架构 514
21-5 SWidthDlg对话框类别 516
21-6 Modal对话框对象的建立 524
第22章 对话框的资料交换与检查机制 529
22-1 DDX与DDV机制 529
22-2 Painter6程序范例 530
22-3 DDX与DDV机制的建立 544
22-4 资料交换与检查机制 546
22-5 DDX与DDV函数的说明 548
第23章 MODELESS对话框 555
23-1 Modeless对话框的建立 555
23-2 Painter7程序范例 555
23-3 Painter7的自定义类别 574
23-4 Modeless对话框的建立 575
23-5 资料交换机制 580
23-6 其他更改的部分 583
24-1-1 ClassWizard建立对话框类别的机制 587
24-1 快速建立对话框类别 587
第24章Visual C++的操作(四)——对话框类别的建立 587
24-1-2 建立对话框类别 589
24-1-3 建立资料交换与检查机制 591
24-1-4 其他相关资源的建立 592
24-2 快速建立对话框应用程序 595
25-2 Button与Static Text 611
25-2-2 小计算器程序范例 611
25-2-1 简介Button与Static Text控制项 611
25-1 对话框应用程序的使用 611
第25章 对话框应用程序与控制项的使用 611
25-2-3 OnCommand信息的响应 621
25-2-4 OnClear函数 628
25-3 Picture 629
25-3-1 Timer(小时钟)程序范例 629
25-3-2 WM-TIMER信息的使用 639
25-3-3 系统时间的取得与CTime对象的使用 642
25-4-1 简介List Box、Combo Box与多页对话框 644
25-4 List Box、Combo Box与多页对话框的建立 644
25-4-2 ListProperty程序范例 645
25-4-3 多页对话框的建立 664
25-4-4 List Box的操作 669
25-4-5 Combo Box的操作 672
25-5 Scroll Bar、Slider、Spin、Edit Box与Check Box 675
25-5-1 简介滚动类控制项 675
25-5-2 简介Edit Box与Check Box 677
25-5-3 SldCtrl程序范例 677
25-5-4 各控制项间的关系 691
25-5-5 初始状态的设定 692
25-5-6 WM-HSCROLL与WM-VSCROLL信息 695
25-5-7 Slider与Scroll Bar的滚动 696
25-5-8 Edit Box的EN-CHANGE信息 699
25-5-9 Check Box的BN-CLICKED信息 700
25-6-1 简介Tree Control、List Control与Radio Box 701
25-6 Tree Control、List Control与Radio Box 701
25-6-2 Dir View程序范例 703
25-6-3 文件信息的取得 717
25-6-4 Image List对象的建立 724
25-6-5 Tree Control的建立 725
25-6-6 List Control的建立 733
25-6-7 Radio Box的使用 742
26-1-1 文件对话框的类型与应用 749
26-1-2 FDialog程序范例 749
26-1 文件对话框的应用 749
第26章 文件对话框与颜色对话框的应用 749
26-1-3 文件对话框的建立与使用 759
26-2 颜色对话框的应用 764
26-2-1 利用颜色对话框设定颜色 764
26-2-2 CDialog程序范例 764
26-2-3 颜色对话框的建立与使用 766
附录 本书所使用MFC函数索引 766