第1章 理解32位环境 2
1.1 区别和相似 2
1.1.1 硬件环境 2
第1部分 在32位环境下操作 2
1.1.2 软件环境 3
1.1.3 Win95/WinNT的其他特性 7
1.2 32位应用程序开发工具 8
1.2.1 创建过程 8
1.2.2 Microsoft Developer Studio 10
1.3 本章内容综述 13
第2章 创建一个MFC应用程序 14
2.2 New Project对话框 15
2.1 选定文件类型 15
2.2.1 Step1:结构 17
2.2.2 Step2:数据库支持 18
2.2.3 Step3:OLE支持 19
2.2.4 Step4:应用程序特性 20
2.2.5 Step5:源代码选项 23
2.2.6 Step6:类名选项 24
2.2.7 新项目的信息 25
2.3 项目框架 25
2.4 ReadMe.TXT文件 27
2.5 应用程序框架 29
2.6 本章内容综述 32
3.1 Windows编程约定 33
3.1.1 匈牙利命名规则 33
第3章 从Windows 3.1到WinNT/Win95 33
3.1.2 其他前缀约定 34
3.1.3 Windows数据类型 35
3.1.4 Windows宏 35
3.1.5 Windows类型和MFC类 36
3.1.6 AFX和AppWizard前缀 37
3.2 MFC消息处理的改变 38
3.3 Windows NT和Windows 95的比较 40
3.4 Thunking(转换) 41
3.5 从剪贴板到DDE和OLE2 43
3.4.1 Generic转换块和Universal转换块的比较 43
3.6 OLE控件中的MFC数据库类 46
3.7 INI文件和注册簿的比较 46
3.8 OLE2注册键 47
3.9 其他新特性 48
3.9.1 Win95中新的用户界面类 48
3.9.2 MAPI支持 48
3.9.3 网络协议:Windows Sockets 48
3.9.4 MFC移植工具包(MFC Migration Kit) 49
3.10 本章内容综述 49
4.1 MessageBox显示 51
第2部分 用户界面 51
第4章 使用消息框 51
4.1.1 MessageBox图标 52
4.1.2 MessageBox按钮 53
4.1.3 MessageBox的反应 55
4.1.4 MessageBox模式 56
4.1.5 AfxMessageBox显示 56
4.2 Dialog_1:消息框的一个演示实例 57
4.2.1 将菜单项与类方法链接 58
4.2.2 完成一个成员函数 60
4.2.3 报告所选的按钮 63
4.2.4 CString类 65
4.2.5 创建一个自定义的Exit 67
4.3 源代码 69
4.4 本章内容综述 74
第5章 介绍AppStudio和应用程序资源 75
5.1 应用程序资源类型 75
5.1.1 加速键 76
5.1.2 对话框 76
5.1.3 字体资源 76
5.1.6 字符串表 77
5.1.7 版本信息 77
5.1.4 图象资源 77
5.1.5 菜单资源 77
5.2 应用程序文件和文件类型 78
5.2.1 资源文件类型 79
5.2.2 编译和链接资源 80
5.2.3 动态链接库 80
5.2.4 头文件 80
5.3 AppStudio 81
5.4 资源管理 81
5.4.1 创建一个新的资源 82
5.4.2 将资源作为二进制数据编辑 82
5.4.3 导入和导出资源项 82
5.4.5 使用Set Includes对话框 83
5.4.4 使用Symbol Browser对话框 83
5.5 本章内容综述 84
第6章 使用菜单、工具栏和状态栏 85
6.1 出发点 85
6.2 菜单和菜单结构 85
6.3 创建一个菜单 86
6.4 结构化的菜单 87
6.5 菜单约定和格式 89
6.6 菜单限制 89
6.7 工具栏 90
6.7.1 创建工具栏位图 90
6.8 将消息和ID值链接到工具栏 91
6.8.1 工具提示信息 95
6.9 切换工具栏 96
6.10 切换菜单 97
6.11 本章内容综述 100
第7章 用户自定义对话框 101
7.1 对话框的设计 101
7.1.1 创建对话框 101
7.2 Standard Controls对话框 104
7.2.1 分配成员变量 104
7.2.2 初始化成员变量 105
7.2.3 从对话框控件取值 106
7.2.4 关闭对话框 107
7.2.5 初始化对话框元素 108
7.2.6 检索对话框结果 108
7.2.7 其他响应方法 109
7.3 Special Controls对话框——WinNT版本 109
7.3.1 滚动条事件消息 110
7.3.2 关闭Special Controls对话框 112
7.4 Special Controls对话框——Win95版本 113
7.4.1 热键控件 113
7.4.2 进度控件 114
7.4.3 游标控件 115
7.4.4 微调按钮控件 117
7.4.5 树视图控件 118
7.5 本章内容综述 124
第8章 用附加控件自定义对话框 125
8.1 标签控件 125
8.1.1 创建标签控件 125
8.1.2 使用子对话框 128
8.1.3 使用附加的CTabCtrl方法 131
8.2 动画控件 132
8.2.1 动画控件AVI的要求 133
8.2.2 创建CAnimateCtrl对话框 133
8.2.3 通知父窗口 136
8.2.4 构建AVI文件 136
8.3 本章内容综述 137
8.2.5 有用的AVI控件类 137
第9章 使用自定义的OCX控件 139
9.1 介绍OLE自定义控件(OCX) 139
9.1.1 OCX属性 139
9.1.2 OCX方法 140
9.1.3 OCX事件 140
9.1.4 COleControl类 140
9.2 使用Visual C版本2.x构建OLE2自定义控件(OCX) 140
9.2.1 选定选项 141
9.2.2 修改控件 142
9.2.3 接受控件信息 143
9.3 使用Visual C版本4.0构建OLE2自定义控件(OCX) 144
9.3.1 ControlWizard文件 146
9.3.2 可选的ControlWizard文件 148
9.4 初始化OCX控件 150
9.5 绘制OCX控件 150
9.5.1 OCX OnDraw函数 150
9.6 OCX控件中的鼠标消息 154
9.7 OCX控件属性 155
9.7.1 给OCX控件增加属性 156
9.7.2 增加新属性 157
9.8 定义Property Page对话框 161
9.9 测试OCX控件 162
9.9.2 测试一个OCX控件 163
9.9.1 注册OCX控件 163
9.10 源代码 165
9.11 本章内容综述 170
第10章 使用公用对话框、字体和颜色 171
10.1 了解公用对话框和数据类型 171
10.2 选定字体和颜色 172
10.2.1 LOGFONT结构 173
10.2.2 初始化LOGFONT结构 175
10.3 选择一种字体 176
10.4 选定一种颜色 180
10.5 使用File Open,Save和Save As对话框 183
10.5.1 OPENFILENAME结构 184
10.5.2 筛选字符串 187
10.5.3 多个文件选择 187
10.6 使用Print对话框 187
10.7 使用Find和Find/Replace对话框 189
10.8 本章内容综述 193
第3部分 图形操作 195
第11章 了解设备特性和映射模式 195
11.1 GetDeviceCaps函数 195
11.2 CreateIC函数 195
11.3 驱动程序版本和硬件类型 196
11.4 视频和打印机分辨率 197
11.5 RASTERCAPS 200
11.6 TEXTCAPS 201
11.7 LINECAPS 202
11.8 CURVECAPS 203
11.9 POLYGONALCAPS 204
11.10 本章内容综述 204
第12章 使用映射模式 205
12.1 标准映射模式 206
12.1.1 SetMapMode函数 206
12.2 原点、窗口和视口 212
12.3 SetWindowExt和SetViewportExt函数 213
12.4.1 GetMapMode函数 214
12.4.2 其他的关于窗口和视口范围的函数 214
12.4 相关的模式、视口和窗口函数 214
12.5 窗口和视口原点 215
12.6 WinModes演示程序 215
12.7 Life演示程序 219
12.7.1 Life游戏 219
12.7.2 Forest Life(森林演变游戏) 221
12.8 本章内容综述 221
第13章 使用颜色、调色板和绘图模式 222
13.1 Windows调色板 223
13.2 颜色定义 224
13.3 标准颜色调色板 225
13.4 颜色合成 226
13.5 Color1应用程序 228
13.6 COLORREF值的三种格式 229
13.6.1 绝对的RGB COLORREF值 229
13.6.2 调色板索引(Palette-Index)COLORREF值 229
13.6.3 调色板相关的(Palette-Relative)COLORREF值 230
13.7 抖色(Dithered Colors) 230
13.8 自定义颜色 231
13.9 捕捉键盘事件 233
13.10 其他键盘事件 235
13.11 捕捉鼠标事件 235
13.12 Color2演示程序中的鼠标消息 236
13.13 颜色到灰度的转换 237
13.14 光栅绘图操作(ROP2) 238
13.15 Color3演示程序 239
13.16 本章内容综述 241
第14章 使用绘图工具 242
14.1 形状(Shape)和线条(Line)工具 242
14.1.1 逻辑画笔(Logical Pen) 242
14.1.2 逻辑画刷 245
14.2 标准绘图形状 247
14.2.1 LineTo函数 248
14.2.2 Rectangle函数 249
14.2.5 弧、带弦的弧和扇形块 250
14.2.4 Ellipse函数 250
14.2.3 RoundRect函数 250
14.2.6 Drawl演示程序 252
14.2.7 绘制饼图 252
14.2.8 PolyGon和PolyPolygon函数 254
14.2.9 多边形填充模式 255
14.2.10 PolyPolygon错误 256
14.3 其他绘图函数 256
14.3.1 PolyPolyline函数 256
14.3.2 PolyBezier函数 257
14.3.3 PolyDraw函数 258
14.4 本章内容综述 259
15.1.1 DIB图象文件 260
第15章 使用位图和屏幕图象 260
15.1 BMP和DIB之比较 260
15.1.2 BITMAPINFOHEADER 261
15.1.3 BITMAPINFO和BITMAPCOREINFO之比较 262
15.1.4 DIB位图颜色表 263
15.1.5 DIB图象数据 263
15.1.6 OS/2和Windows图象之比较 263
15.2 屏幕图象的捕捉与显示 263
15.2.1 Capture实用程序 264
15.2.2 设置和清除 264
15.2.3 进一步初始化 265
15.2.4 OnImageDisPlay过程 266
15.2.5 捕捉屏幕信息 267
15.2.6 显示剪贴板 268
15.2.7 写位图文件 269
15.3 位图压缩格式 272
15.3.1 16色图象所用的BI_RLE4图象压缩格式 272
15.3.2 256色图象所用的BI_RLE8图象压缩格式 274
15.4 读取和显示图象 274
15.4.1 ReadDIB File API 275
15.4.2 SaveDIBFile API 276
15.4.3 PaintDIB API 277
15.4.4 ImageAPI中的其他实用函数 279
15.5 BmpImage演示程序 280
15.5.1 BmpImage中的剪贴板操作 281
15.6 本章内容综述 282
第4部分 Visual C中其他成份 284
第16章 用对象类实现数据接口 284
16.1 文件访问方法 284
16.1.1 MFC的文件功能 284
16.1.2 用CFile打开文件 286
16.1.3 访问和共享标志 287
16.2 序列化 288
16.2.1 制定序列化 289
16.2.2 实现定制序列化的方法 289
16.2.3 插入和析取运算符 290
16.3 CArchive类 291
16.4 随机文件访问 292
16.5 CStdioFile类 293
16.5.1 用CStdioFile进行文本输入 293
16.5.2 用CStdioFile进行文本输出 294
16.6 AARL_HAM演示程序 294
16.6.1 读写CArchive记录 296
16.6.2 重载的运算符 297
16.6.3 GetEntry函数 298
16.6.4 UpdateData函数 299
16.7 本章内容综述 299
第17章 理解ODBC连接 300
17.1 创建一个ODBC应用程序 301
17.1.1 缺省数据库 306
17.1.2 回顾 307
17.2 演示程序AARL3 307
17.3 间接编辑——不得已的操作 309
17.4 本章内容综述 311
第18章 使用简单OLE操作 312
18.1 应用程序集成 312
18.1.1 剪贴板服务 312
18.1.2 动态数据交换 312
18.1.3 图元文件 312
18.2 对象链接和嵌入 313
18.2.1 复合文档 314
18.2.2 链接对象与嵌入对象的比较 314
18.2.3 包(Packages) 315
18.2.4 OLE动词 316
18.2.5 OLE包容器与OLE服务器的比较 317
18.3 创建OLE包容器 317
18.3.1 COle_cntrView类 318
18.3.2 COle_cntrCntrItem(COleClientItem)类 321
18.4 OLE服务器注册与选择 322
18.4.1 实用程序RegEdit 322
18.4.2 选定一个服务器:CO1eInsertDialog 323
18.4.3 注册一个OLE服务器 325
18.5 创建一个OLE服务器 326
18.5.1 OLE服务器类型 326
18.5.2 使用AppWizard创建OLE服务器 327
18.5.3 COle_srvrSrvrItem类 328
18.5.4 在图元文件环境中绘图 330
18.5.5 CInPlaceFrame类 331
18.5.6 COle_srvrApp类 332
18.5.7 InitInstance方法 333
18.5.8 COle_srvrView类 335
18.5.9 一个有错误的例子 336
18.5.10 改正错误的一个办法 337
18.6 服务器应用程序菜单 338
18.7 实用程序OLE2View 340
18.8 本章内容综述 341
第19章 MFC类简介 342
19.1 MFC通用类 342
19.1.1 CObject 343
19.1.2 文件类 344
19.1.3 坐标类 344
19.1.4 CString 345
19.1.5 时间类 345
19.1.6 调试实用类 345
19.2 MFC视对象类 346
19.2.1 CDC和CDC的派生类 347
19.2.3 CWnd和CWnd派生类 348
19.2.2 CGdiObject和CGdiObject派生类 348
19.2.4 相关对象类 354
19.3 MFC应用程序框架类 355
19.3.1 相关对象类 357
19.4 MFC集合类 357
19.4.1 数组集合类 357
19.4.2 链表集合类 358
19.4.3 映射集合类 359
19.4.5 用户相关的基类 360
19.4.6 集合类帮助 360
19.4.4 封皮(Wrapper)类 360
19.5 MFC OLE2类 361
19.5.1 用户客户项 365
19.5.2 用户服务器项 365
19.5.3 相关的OLE类 366
19.6 MFC数据库类 366
19.6.1 用户记录集 368
19.7 MFC Windows常用控件类 368
19.8 MFC Windows Socket类 370
19.9 MFC DAO类 371
19.10 本章内容综述 374
20.1.1 动态链接进程 375
20.1 动态链接库 375
第20章 理解DLI和派生子类 375
20.1.2 载入时刻动态链接 376
20.1.3 运行时刻动态链接 376
20.1.4 动态链接的优缺点 377
20.1.5 创建动态链接库 377
20.1.6 入口点函数 380
20.1.7 向DLL加入函数 381
20.1.8 调用DLL 382
20.1.9 在开发过程中测试DLL 384
20.2 派生子类 385
20.2.1 开始 385
20.2.3 创建新类的其他途径 386
20.2.2 增加新方法 386
20.2.4 检索祖先类方法 387
20.3 本章内容综述 388
第21章 类的跟踪和调试 389
21.1 Developer Studio工具集 389
21.1.1 Quick Watch窗口 390
21.1.2 Call Stack窗口 392
21.2 其他的调试选项 392
21.2.1 Memory窗口 393
22.2.2 Registers窗口 393
21.3 本章内容综述 394