第一部分 Windows、Visual C++和应用程序框架基础 3
第1章 Microsoft Windows和Visual C++ 3
Windows编程模型 3
Visual C++组件 5
第2章 Microsoft基本类库应用程序框架 15
为什么使用应用程序框架 15
什么是应用程序框架 19
文档和视图 23
MFC库消息映射 23
第3章 用AppWizard开始——“Hello,world!” 27
什么是视图 27
单文档界面与多文档界面 28
CEx03aView视图类 33
在窗口中绘制——Windows图形设备接口 33
资源编辑器简介 36
Win32调试目标与Win32发布目标 38
启用诊断宏 39
理解预编译头文件 39
运行程序的两种方法 41
第4章 基本事件处理、映射模式和滚动视图 42
获得用户输入——消息映射函数 42
映射模式 55
滚动窗口 62
其他Windows消息 67
第5章 图形设备接口、颜色和字体 70
设备环境类 70
GDI对象 73
Windows颜色映射 76
字体 79
EX05A示例 82
EX05B示例 87
EX05C示例——再用CScrollView 91
第6章 模态对话框和Windows通用控件 97
模态与非模态对话框 97
资源和控件 98
模态对话框编程 98
包罗万象的对话框——EX06A示例 99
增强对话框程序的功能 114
设置对话框背景和控件颜色 119
标识控件:CWnd指针和控件ID 119
在对话框窗口内部绘图 120
在运行时增加对话框控件 121
使用其他控件特性 122
Windows通用控件 122
EX06B示例 126
第7章 非模态对话框和Windows通用对话框 138
非模态对话框 138
CFormView类——非模态对话框的选择 146
Windows通用对话框 147
第8章 使用ActiveX控件 156
ActiveX控件与普通的Windows控件 156
安装ActiveX控件 158
日历控件 160
ActiveX控件包容器编程 161
EX08A示例——ActiveX控件对话框包容器 167
HTML文件中的ActiveX控件 176
运行时创建ActiveX控件 177
EX08B示例——网络浏览器ActiveX控件 177
EX08C示例——完整的双窗口网络浏览器 182
图片属性 183
可绑定的属性——修改通知 183
其他ActiveX控件 184
第9章 Internet Explorer 4通用控件 186
Internet Explorer 4新通用控件简介 186
EX09A示例 190
第10章 Win32内存管理 207
进程和内存空间 207
虚拟内存的工作方式 210
VirtualAloc函数——占用的和保留的内存 212
Windows堆和GlobalAlloc函数族 213
小块堆、C++的new和delete运算符及_heapmin 214
内存映射文件 215
访问资源 216
管理动态内存的技巧 217
常量数据的优化存储 217
第11章 位图 219
GDI位图和与设备无关的位图 219
使用GDI位图 220
使用位图改进屏幕显示 225
DIB和CDib类 231
深入使用DIB 246
在按钮上放置位图 248
第12章 Windows消息处理和多线程编程 254
Windows消息处理 254
闲置状态处理 260
多线程编程 261
主框架窗口和文档类 275
编辑控件和属性表 275
第13章 菜单、键盘、加速键、多信息 275
第二部分 文档视图结构 275
Windows菜单 276
键盘加速键 277
命令处理 277
应用程序框架的内置菜单项 280
MFC文本编辑选项 281
EX13A示例 282
属性表 288
改进EX13A示例 290
CMenu类 307
创建浮动的弹出式菜单 308
扩展命令处理 308
第14章 工具栏和状态栏 311
控制栏和应用程序框架 311
工具栏 312
工具提示 314
主框架窗口的定位 315
工具栏示例EX14A 315
状态栏 321
状态栏示例EX14B 324
Internet Explorer重组栏工具栏 330
重组栏示例EX14C 330
第15章 可重用框架窗口基类 336
为什么可重用基类难以编写 336
CPersistentFrame类 336
CFrameWnd类和ActivateFrame成员函数 337
PreCreateWindow成员函数 338
Window注册表 339
使用CString类 341
控制栏状态和注册表 343
最大化窗口的位置 343
静态数据成员 344
默认窗口矩形 344
EX15A示例 344
MDI应用程序中的可持续框架 352
第16章 文档与视图的分离 354
文档-视图相互作用的函数 354
最简单的文档-视图应用程序 357
CFormView类 358
诊断转储 359
Cobject类 359
EX16A示例 364
更高级的文档-视图的相互作用 372
CDocument::DeleteContents函数 373
CObList集合类 373
留给读者的两个练习 399
第17章 文档读写——SDI应用程序 400
什么是序列化 400
EX17A示例——序列化的SDI 413
从资源管理器启动和拖放 428
第18章 读写文档——MDI应用程序 431
MDI应用程序 431
EX18A示例 440
第19章 打印和打印预览 455
Windows的打印 455
打印预览 458
打印机的编程 458
EX19A示例——所见即所得的打印程序 460
模板集合类的再访问——CArray类 468
EX19B示例——多页打印程序 469
第20章 拆分窗口与多个视图 476
拆分窗口 476
视图选项 476
动态和静态拆分窗口 477
示例EX20A——单一视图类SDI动态拆分 477
示例EX20B——双视图类SDI静态拆分 479
示例EX20C——切换无拆分的视图类 483
示例EX20D——多个视图类MDI应用程序 485
第21章 上下文相关帮助 489
应用程序框架与WinHelp 496
帮助示例——无须编程 501
MAKEHELP进程 503
帮助命令处理 504
帮助命令处理程序示例——EX21B 505
第22章 动态链接库 509
基本DLL理论 509
MFC DLL——扩展的与常规的 514
自定义控件DLL 524
第23章 不使用文档或视图类的MFC程序设计 539
示例EX23A——基于对话框的应用程序 539
示例EX23B——SDI应用程序 544
示例EX23C——MDI应用程序 546
第四部分 ACTIVE:COM,自动化和OLE 550
第24章 组件对象模型 550
ActiveX技术的背景 550
组件对象模型 551
使用MFC类库的真正的COM 574
包容、聚合与继承 594
第25章 自动化 596
C++与Visual Basic for Application的连接 596
Microsoft Excel——比Visual Easic更好的Visual Basic 597
自动化客户和自动化组件 597
属性、方法和集合 600
自动化解决的问题 600
IDispatch接口 601
自动化编程选择 601
MFC自动化组件 603
MFC自动化客户程序 605
使用编译程序#import指令的自动化客户程序 608
VARIANT类型 609
COleVariant类 611
自动化示例 615
VBA早绑定 666
第26章 统一数据传输:剪贴板传输和OLE拖放 673
IDataObject接口 673
FORMATETC和STGMEDIUM结构 674
MFC对统一数据传输的支持 677
MFC CRectTracker类 682
示例EX26A——数据对象剪贴板 683
MFC拖放功能 695
示例EX26B——OLE拖放 697
Windows应用程序和拖放-Dobjview 701
结论 702
第27章 结构化存储 703
复合文件 703
存储区和IStorage接口 704
流和IStream接口 707
ILockBytes接口 709
示例EX27A——结构化存储 710
结构化存储和持久性COM对象 716
示例EX27B——持久DLL组件 719
示例EX27C——持久存储客户程序 725
复合文件分段 732
复合文件的其他优点 732
第28章 OLE嵌入组件和包容器 734
嵌入及实地激活(可视化编辑) 734
小型服务器和完整服务器(组件)——链接 735
Windows元文件和嵌入对象 736
组件程序的MFC OLE结构 737
示例EX28A——MFC实地激活小型服务器 738
包容器——组件交互作用 744
组件状态 748
接口概述 750
OLE辅助函数 753
OLE嵌入包容器应用程序 754
示例EX28B——嵌入包容器 755
示例EX28C——OLE嵌入组件 784
第29章 活动模板库基础 792
回顾COM 792
编写COM代码 796
COM基础设施 798
ATL路线图 800
客户端ATL编程方法 801
服务器端的ATL编程 815
结论 841
第五部分 数据库管理 842
第30章 ATL和ActiveX控件 842
ActiveX控件 842
利用ATL编写控件 843
结论 887
数据库管理的优点 891
第31章 Microsoft ODBC数据库管理 891
结构化查询语言 892
ODBC标准 893
学生注册数据库 898
EX31A记录集示例 899
EX31A程序组件 906
过滤器和排序字符串 908
连接两个数据库表格 909
MFC CRecordView类 910
EX31B记录视图示例程序 911
多记录集 917
ODBC多线程 920
成批获取行 920
无绑定使用记录集 920
第32章 Microsoft DAO的数据库管理 923
DAO、COM和Microsoft Jet数据库引擎 923
DAO和VBA 923
DAO和MFC 924
在ODBC模式下使用DAC——瞬态和动态集 925
用DAO可以打开的数据库 925
DAO表类型记录集 926
DAO的QueryDef和TableDef类 927
DAO多线程 927
在滚动窗口中显示数据库行 927
动态记录集编程 932
EX32A示例程序 932
EX32A资源文件 949
运行EX32A程序 950
使用OLE DB的原因 951
第33章 OLE DB模板 951
基本OLE DB结构 952
基本OLE DB模板结构 953
创建OLE DB客户 961
使用OLE DB客户代码 964
创建OLE DB提供者 966
结论 977
第34章 TCP/IP,Winsock和WinInet 981
关于COM 981
Internet基础 981
建立价值99美元的内部网 992
Winsock 994
使用CHttpBlockingSocket创建网络服务器 1009
使用CHttpBlockingSocket创建Web客户 1012
WinInet 1014
使用MFC WinInet类建立Web客户 1019
异步标记文件 1021
IIS的实现方法 1024
Microsoft IIS 1024
第35章 Microsoft Internet信息服务器(IIS)编程 1024
第六部分 Internet编程 1024
ISAPI服务器扩展 1028
实际的ISAPI服务器扩展——ex35a.dll 1033
ISAPI数据库访问 1040
使用HTTP Cookies链接事务处理 1040
WWW鉴别 1042
ISAPI过滤器 1043
样例ISAPI过滤器-ex35b.dll,ex35c.exe 1045
第36章 ActiveX文档服务器及Internet 1050
ActiveX文档理论知识 1050
ActiveX文档服务器样例EX36A 1055
ActiveX文档服务器例程EX36B 1058
进一步应用ActiveX文档服务器 1068
第37章 动态HTML介绍 1069
DHTML对象模型 1070
Visual C++和 DHTML 1074
结束语 1083
第38章 Windows CE的Visual C++ 1085
Windows CE设备 1085
Windows CE的Visual C++ 1089
有关Windows CE的更多信息 1102
附录A Microsoft基础类库中的消息映射函数 1103
子窗口通知消息的处理程序 1103
窗口通知消息的处理程序 1106
用户自定义的消息代码 1110
附录B MFC库运行时类标识和动态对象的创建 1111
运行时获得对象类名 1111
MFC CRuntimeClass结构和Runtime_Class宏 1112
动态创建 1113
例程 1114