第1章 快速建立MFC应用程序 1
1.1 创建一个新的项目 2
1.1.1 创建新的项目 2
1.1.2 选择程序的文档支持类型 3
1.1.3 选择程序的数据库支持类型 4
1.1.4 选择程序的复合文档支持类型 4
1.1.5 选择程序的界面选项 5
1.1.6 高级选项 6
1.1.7 文档模板设置 7
1.1.8 确认文件和类名 8
1.1.9 编译和运行生成的应用程序 9
1.2 浏览程序代码 10
1.2.1 应用程序类——CFirstApp类 10
1.2.2 主框架类——CMainFrame类 15
1.2.3 文档类——CFirstDoc类 18
1.2.4 视类——CFirstView类 21
1.3 让程序做些工作 24
1.3.1 命名法则 25
1.3.2 向类中添加成员 26
1.4 理解程序的运行 30
1.4.1 传统C语言应用程序的结构 30
1.4.2 MFC应用程序 36
1.5 小结 43
第2章 文档序列化 45
2.1 CFile类 46
2.1.1 创建一个项目MyFile1 46
2.1.2 保存文件 47
2.1.3 载入文件 50
2.2 文档序列化的概念 53
2.3 自定义一个可序列化的类 54
2.3.1 从Cobject中派生你的类 54
2.3.2 覆盖该类的Serialize成员函数 54
2.3.3 使用DECLARE_SERIAL宏 56
2.3.4 定义无参数的构造函数 56
2.3.5 在实现文件中使用IMPLEMENT_SERIAL宏 56
2.4 序列化一个对象 57
2.4.1 什么是归档对象 57
2.4.2 创建一个归档对象 57
2.4.3 使用归档类的<<和>>运算符 58
2.4.4 通过归档存储和读取对象 60
2.5 在应用中实现文档序列化 63
2.5.1 重新定义文档类的函数Serialize 63
2.5.2 应用程序框架的工作内幕 66
2.5.3 定义文档类型 69
2.6 多文档界面的程序 82
2.6.1 建立MultiType多文档界面程序 82
2.6.2 实现动态切分窗口 85
2.6.3 完善程序的文档类 86
2.6.4 实现新的视图类 89
2.6.5 实现静态切分窗口 97
2.6.6 在不同的模式之间切换 100
2.6.7 检查MultiType程序的功能 102
2.7 小结 103
第3章 对话框与常用控件 105
3.1 有模式对话框的使用 106
3.1.1 建立项目ModalDialog 107
3.1.2 向对话框中加入控件 107
3.1.3 加入对话框类和成员变量 114
3.1.4 代码规整 115
3.2 无模式对话框 125
3.2.1 建立Expl项目 125
3.2.2 修改项目资源 126
3.2.3 为对话框指定新类和加入成员函数 127
3.2.4 代码规整 128
3.2.5 进一步理解expl 136
3.3 通用对话框 148
3.3.1 CFileDialog类的使用 148
3.3.2 CPageSetupDialog类的使用 159
3.3.3 CPrintDialog类的使用 160
3.3.4 CFindReplaceDialog类的使用 162
3.3.5 COleDialog类的使用 165
3.4 Windows 95的新控件 166
3.4.1 一个能运行的项目 166
3.4.2 spin控件(微调按钮) 167
3.4.3 Progress Control(进度控件) 170
3.4.4 Slider Contorl(滑块控件) 173
3.4.5 Hot Key(热键控件) 177
3.4.6 Image List Control(图像列表控件) 181
3.4.7 List View Control(列表视图控件) 184
3.4.8 Tree Control(树形视图控件) 192
3.4.9 Rich Edit Control(多样式文本编辑)控件 197
3.4.10 Month Calendar Control(月历)控件 202
3.4.11 Tab Controls(标签控件) 203
3.4.12 运行程序 206
3.5 小结 222
第4章 绘图与文本 223
4.1 设备环境与图形对象 224
4.1.1 设备环境——CDC类 224
4.1.2 图形对象——CGdiObject类 227
4.1.3 客户区鼠标消息 228
4.1.4 非客户区鼠标消息 231
4.2 在屏幕上绘图 232
4.2.1 建立一个新的项目 233
4.2.2 添加菜单资源 233
4.2.3 使菜单工作 233
4.2.4 实现画点功能 238
4.2.5 实现画线功能 240
4.2.6 实现画矩形与画椭圆功能 246
4.2.7 实现填充功能 250
4.2.8 实现随手画功能 251
4.3 使用画笔和画刷 255
4.3.1 建立程序的框架 255
4.3.2 创建和使用不同的画笔 259
4.3.3 创建和使用不同的画刷 265
4.4 输出文本 267
4.4.1 字体 267
4.4.2 CDC类的文本处理函数 271
4.4.3 建立程序的框架 273
4.4.4 在OnDraw()函数中实现文本输出 279
4.5 一个简单的屏幕保护程序 280
4.5.1 屏幕保护程序的基本知识 281
4.5.2 建立新的Circle项目 281
4.5.3 修改CCircleApp::InitInstance()函数 283
4.5.4 完成设置对话框 286
4.5.5 完成窗口类 291
4.5.6 检查Circle屏幕保护程序 296
4.6 小结 296
第5章 OLE技术 299
5.1 OLE与ActiveX的有关概念 300
5.1.1 OLE文档 300
5.1.2 链接与嵌入 300
5.1.3 OLE容器与OLE服务器 301
5.1.4 就地激活(可视编辑) 301
5.1.5 自动化(Automation) 301
5.1.6 Active文档 301
5.1.7 ActiveX控件 302
5.2 建立OLE容器应用程序 302
5.2.1 建立Blank程序框架 303
5.2.2 浏览Blank程序的代码 303
5.2.3 移动、重设大小与显示跟踪矩形 308
5.2.4 处理多个OLE项 312
5.2.5 拷贝、粘贴与清除 316
5.2.6 检查Blank程序的功能 320
5.2.7 升级到Active文档容器 333
5.3 建立OLE服务器应用程序 335
5.3.1 建立Circle程序框架 335
5.3.2 浏览Circle程序的代码 336
5.3.3 实现Circle程序的功能 341
5.3.4 检查Circle程序的功能 346
5.3.5 升级到Active文档服务器 347
5.4 建立Automation服务器 348
5.4.1 建立CircleA程序框架 349
5.4.2 浏览CircleA程序的代码 349
5.4.3 暴露属性和方法 351
5.4.4 使用Visual Basic创建Automation客户程序 356
5.5 建立ActiveX控件 359
5.5.1 建立CircleC控件的框架 359
5.5.2 浏览CircleC控件的代码 360
5.5.3 暴露属性、方法与事件 362
5.6 小结 368
第6章 图像与MCI 371
6.1 调色板 372
6.1.1 调色板的原理 372
6.1.2 调色板的创建和实现 374
6.1.3 使用颜色的三种方法 375
6.1.4 与系统调色板有关的消息 376
6.2 位图 382
6.3 依赖于设备的位图(DDB) 382
6.3.1 DDB的创建 382
6.3.2 DDB的用途 383
6.4 与设备无关的位图(DIB) 386
6.4.1 DIB的结构 387
6.4.2 编写DIB类 388
6.5 动画控件 398
6.5.1 动画控件的使用 398
6.5.2 动画控件的局限 400
6.6 Win 32的多媒体服务 400
6.6.1 高级音频函数 401
6.6.2 MCI 403
6.7 小结 407
第7章 ActiveX控件应用 409
7.1 MMControl控件 410
7.1.1 MMControl控件属性 410
7.1.2 媒体播放器的制作 411
7.2 MCIWndX控件 428
7.2.1 MCIWndX控件 428
7.2.2 动画播放应用程序 429
7.3 MP3音乐播放器 443
7.4 GIF动画播放器 451
7.5 小结 462
第8章 OPENGL编程 463
8.1 OPENGL基础 464
8.1.1 编程入门 464
8.1.2 键盘操作和动画基础 475
8.2 颜色、光照与材质 480
8.2.1 颜色 480
8.2.2 光照 484
8.2.3 材质 489
8.3 位图和图像 503
8.3.1 位图和字符 503
8.3.2 图像 507
8.4 纹理与建模 512
8.4.1 OPENGL的纹理 512
8.4.2 建模 521
8.5 光影与特殊效果 545
8.5.1 光影效果 545
8.5.2 特殊效果 554
8.6 显示列表 566
8.6.1 实现 567
8.6.2 管理显示列表 568
8.6.3 多级显示列表 568
8.7 帧缓存和动画 569
8.7.1 帧缓存的实现 569
8.7.2 帧缓存的清除 569
8.7.3 双缓存动画 570
8.8 小结 575