图书介绍
Visual C++技术内幕 第4版 修订版PDF|Epub|txt|kindle电子书版本网盘下载
- (美)小克鲁格林斯基著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302197218
- 出版时间:2009
- 标注页数:814页
- 文件大小:157MB
- 文件页数:853页
- 主题词:C语言-程序设计
PDF下载
下载说明
Visual C++技术内幕 第4版 修订版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
前言29
第一部分 Windows、Visual C++和应用程序框架基础第一章 Microsoft Windows和Visual C++3
1.1 Windows的编程模式3
1.1.1 消息处理3
1.1.2 Windows的图形设备接口(GDI)4
1.1.3 基于资源的程序设计4
1.1.4 内存管理4
1.1.5 动态连接库(DLL)5
1.1.6 Win32应用程序编程接口5
1.2 Visual C++的组成5
1.2.1 Microsoft Developer Studio 97和创建过程6
1.2.2 资源编辑器——Workspace ResourceView8
1.2.3 C/C++编译器8
1.2.4 资源编译器9
1.2.5 连接器9
1.2.6 调试器9
1.2.7 AppWizard9
1.2.8 ClassWizard10
1.2.9 源程序浏览器10
1.2.10 联机帮助11
1.2.11 Windows诊断工具12
1.2.12 源代码控制12
1.2.13 Gallery12
1.2.14 Microsoft基本类库4.21版13
1.2.15 Microsoft ActiveX模板库13
第二章 Microsoft基本类库应用程序框架14
2.1 为什么要使用应用程序框架14
2.1.1 学习曲线17
2.2 什么是应用程序框架18
2.2.1 应用程序框架和MFC库18
2.2.2 应用程序框架示例18
2.3 MFC库消息映射21
2.3.1 文档和视图22
第二部分 MFC库中的视图类27
第三章 从“Hello,world!”着手学习AppWizard27
3.1 什么是视图27
3.2 单文档界面(SDI)和多文档界面(MDI)28
3.3 “不做任何事情”的应用程序28
3.4 CEx03aView视图类32
3.5 在视窗内绘图——Windows的图形设备接口32
3.5.1 OnDraw成员函数33
3.5.2 Windows设备环境33
3.5.3 往EX03A程序中加入绘制代码33
3.6 资源编辑器简介35
3.6.1 ex03a.rc的内容35
3.6.2 运行对话框资源编辑器36
3.7 Win32 Debug目标和Win32 Release目标37
3.8 允许诊断宏37
3.9 对预编译头文件的理解38
3.10 两种方法运行程序39
第四章 基本事件处理、映射模式和滚动视图40
4.1 获取用户输入——消息映射函数40
4.1.1 消息映射40
4.1.2 保存视图的状态-类数据成员41
4.1.3 初始化视图类数据成员42
4.1.4 使矩形区域无效42
4.1.5 Windows的客户区域42
4.1.6 CRect,CPoint和CSize类的运算43
4.1.7 一个点是否在矩形内43
4.1.8 CRect的LPRECT操作符43
4.1.9 一个点是否在椭圆内44
4.2 EX04A示例程序44
4.3 对EX04A使用ClassWizard48
4.3.1 同时使用AppWizard和ClassWizard49
4.4 映射模式51
4.4.1 MM_TEXT映射模式52
4.4.2 “固定比例”映射模式53
4.4.3 “可变比例”映射模式53
4.4.4 坐标变换54
4.4.5 EX04B示例程序——转换到MM_HIMETRIC映射模式56
4.5 滚动视窗57
4.5.1 窗口比人们所见到的要大57
4.5.2 滚动条58
4.5.3 滚动方式的选择58
4.5.4 OnInitialUpdate函数58
4.5.5 接收键盘输入58
4.5.6 EX04C滚动示例程序59
4.6 其他Windows消息62
4.6.1 WM_CREATE消息62
4.6.2 WM_CLOSE消息63
4.6.3 WM_QUERYENDSESSION消息63
4.6.4 WM_DESTROY消息63
4.6.5 WM_NCDESTROY消息63
第五章 图形设备接口(GDI)、颜色及字体64
5.1 设备环境类64
5.1.1 显示设备环境类CClientDC和CWindowDC65
5.1.2 构造和析构CDC对象65
5.1.3 设备环境的状态66
5.1.4 CPaint DC类66
5.2 GDI对象67
5.2.1 GDI对象的构造与析构67
5.2.2 跟踪GDI对象67
5.2.3 库存的GDI对象68
5.2.4 GDI选择的有效期69
5.3 Windows的颜色映射70
5.3.1 标准视频图形阵列(VGA)显示卡70
5.3.2 256色显示卡71
5.3.3 16位颜色显示卡71
5.3.4 24位颜色显示卡72
5.4 字体72
5.4.1 字体是GDI对象72
5.4.2 选择字体72
5.4.3 打印字体73
5.4.4 显示字体73
5.4.5 显示器的逻辑英寸和物理英寸73
5.4.6 计算字符高度74
5.5 EX05A示例程序75
5.5.1 EX05A程序的组成元素78
5.6 EX05B程序79
5.6.1 EX05B程序的组成元素82
5.7 EX05C示例程序——再次使用CScrollView82
5.7.1 EX05C程序的组成元素86
5.7.2 CScrollView的SetScaleToFitSize模式87
5.7.3 在滚动视图中使用逻辑twips映射模式88
第六章 模式对话框和Windows通用控件89
6.1 模式和无模式对话框89
6.2 资源和控件90
6.3 模式对话框的编程90
6.4 包罗万象的对话框——EX06A示例程序91
6.4.1 创建对话框资源92
6.4.2 ClassWizard和对话框类99
6.4.3 将对话框与视图相连接102
6.4.4 深入理解EX06A应用程序104
6.5 对话框程序的改进105
6.5.1 获得OnOK退出控制106
6.5.2 OnCancel处理107
6.5.3 和滚动条控件挂上钩107
6.6 控件的标识:CWnd指针和控件ID109
6.7 设置对话框的背景色和其中控件的颜色109
6.8 在对话框窗口内绘图111
6.9 在运行时加入对话框控件111
6.10 利用其他的控件特性112
6.11 Windows通用控件112
6.11.1 进度指示器控件113
6.11.2 滑杆条(Trackbar)控件113
6.11.3 微调按钮控件114
6.11.4 列表控件114
6.11.5 树状控件114
6.11.6 WM_NOTIFY消息115
6.12 EX06B示例程序115
6.13 其他Windows通用控件125
第七章 无模式对话框和Windows通用对话框类126
7.1 无模式对话框126
7.1.1 创建无模式对话框126
7.1.2 用户定义的消息127
7.1.3 对话框的归属127
7.1.4 无模式对话框的例子——EX07A127
7.2 CFormView类——另外一种可供选择的无模式对话框134
7.3 Windows通用对话框134
7.3.1 直接使用CFileDialog类134
7.3.2 从通用对话框类进行派生135
7.3.3 嵌套对话框135
7.3.4 使用CFileDialog的一个例子——EX07B135
7.3.5 CFileDialog的其他可定制特性141
第八章 使用ActiveX控件142
8.1 ActiveX控件和普通的Windows控件142
8.1.1 普通的Windows控件——参考体系142
8.1.2 ActiveX控件与普通控件的相同点143
8.1.3 ActiveX控件与普通控件的不同点——属性和方法143
8.2 安装ActiveX控件144
8.3 日历控件145
8.4 ActiveX控件包容器编程147
8.4.1 属性访问147
8.4.2 ClassWizard为ActiveX控件产生的C++类148
8.4.3 AppWizard对ActiveX控件的支持150
8.4.4 ClassWizard和包容器对话框150
8.4.5 对话框类数据成员和控件类的用法150
8.4.6 映射ActiveX控件事件151
8.4.7 把ActiveX控件锁定在内存里152
8.5 EX08A示例程序——ActiveX控件对话框包容器152
8.6 ActiveX控件在HTML文件中的使用160
8.7 在运行时创建ActiveX控件160
8.8 EX08B示例程序——Web浏览器ActiveX控件161
8.9 EX08C示例程序——一个完整的双窗口浏览器165
8.10 图形属性165
8.11 约束属性——改变通知166
8.12 其他的ActiveX控件167
第九章 Win32内存管理168
9.1 进程和内存空间168
9.1.1 Windows 95进程地址空间170
9.1.2 Windows NT进程地址空间170
9.2 虚拟内存如何工作170
9.3 VirtualAlloc函数——占用和保留内存173
9.4 Windows堆和GlobalAlloc函数族173
9.5 小内存堆,C++的new和delete操作符,_heapmin174
9.6 内存映射文件175
9.7 访问资源176
9.8 管理动态内存的一些提示177
9.9 常量数据的优化存储177
第十章 位图179
10.1 GDI位图和与设备无关的位图179
10.2 彩色位图和单色位图180
10.3 使用GDI位图180
10.3.1 从资源中装入GDI位图180
10.3.2 显示映射模式的作用181
10.3.3 对位进行伸缩处理182
10.3.4 EX10A示例程序182
10.4 利用位图改进屏幕显示185
10.4.1 EX10B示例程序185
10.4.2 Windows动画189
10.5 DIB和CDib类190
10.5.1 关于调色板编程的术语190
10.5.2 DIB、象素和颜色表191
10.5.3 BMP文件中DIB的结构192
10.5.4 DIB访问函数193
10.5.5 CDib类193
10.5.6 DIB显示性能198
10.5.7 EX10C示例程序199
10.6 进一步使用DIB202
10.6.1 LoadImage函数202
10.6.2 DrawDibDraw函数203
10.7 在按钮上设置位图204
10.7.1 EX10D示例程序205
10.7.2 进一步使用位图按钮208
第十一章 Windows消息处理和多线程编程209
11.1 Windows消息处理209
11.1.1 单线程程序处理消息的过程209
11.1.2 交出控制210
11.1.3 计时器210
11.1.4 EX11A示例程序211
11.2 空状态处理214
11.3 多线程编程215
11.3.1 编写辅助线程函数和启动线程215
11.3.2 主线程如何和辅助线程通话216
11.3.3 辅助线程如何和主线程通话217
11.3.4 EX11B示例程序217
11.3.5 用事件使线程同步219
11.3.6 EX11C示例程序219
11.3.7 线程阻塞221
11.3.8 排斥区222
11.3.9 互斥体(mutex)和信号(semaphore)223
11.3.10 用户界面线程(UI线程)224
第三部分 文档-视图结构227
第十二章 菜单、键盘加速键、复文本编辑控件和属性表227
12.1 主框架窗口和文档类227
12.2 Windows的菜单228
12.3 键盘加速键229
12.4 命令处理229
12.4.1 派生类中的命令消息控制230
12.4.2 更新命令用户界面消息控制函数231
12.4.3 对话框发送的命令231
12.5 应用程序框架的内含菜单项232
12.6 菜单项的允许/禁用232
12.7 MFC文本编辑选择233
12.7.1 CEditView类233
12.7.2 CRichEditView类233
12.7.3 CRichEditCtrl类233
12.8 EX12A示例程序234
12.9 属性表239
12.9.1 创建属性表239
12.9.2 属性表数据交换239
12.10 改进EX12A示例程序240
12.11 Apply按钮的处理过程254
12.12 CMenu类254
12.13 创建浮动的弹出式菜单255
12.14 扩展命令处理256
第十三章 工具栏和状态栏258
13.1 控制栏和应用程序框架258
13.2 工具栏259
13.2.1 工具栏位图259
13.2.2 按钮的状态259
13.2.3 工具栏和命令消息260
13.2.4 工具栏更新命令UI消息控制函数261
13.3 工具提示261
13.4 寻找主框架窗口261
13.5 EX13A工具栏示例程序262
13.6 状态栏267
13.6.1 状态栏的定义267
13.6.2 信息行268
13.6.3 状态指示器268
13.6.4 获得对状态栏的控制268
13.7 EX13B状态栏示例程序269
第十四章 可重用框架窗口基类275
14.1 为什么可重用基类难以设计275
14.2 CPersistentFrame类276
14.3 CFrameWnd类和ActivateFrame成员函数276
14.4 PreCreateWindow成员函数277
14.5 Windows注册表278
14.6 使用CString类280
14.7 最大化窗口的位置281
14.8 控制栏状态和注册表282
14.9 静态数据成员282
14.10 默认窗口矩形282
14.11 EX14A示例程序283
14.12 MDI应用程序中的持续框架289
第十五章 文档与视图的分离291
15.1 文档-视图之间的相互作用函数291
15.1.1 CView::GetDocument函数291
15.1.2 CDocumeat::Update AllViews函数292
15.1.3 CView::OnUpdate函数293
15.1.4 CView::OnInitialUpdate函数293
15.1.5 CDocument::OnNewDocument函数293
15.2 最简单的文档-视图应用程序294
15.3 CFormView类294
15.4 CObject类295
15.5 诊断信息转储296
15.5.1 TRACE宏296
15.5.2 afxDump对象296
15.5.3 信息转储环境及CObject类297
15.5.4 未被删除对象的自动信息转储298
15.6 EX15A示例程序300
15.7 更加高级的文档-视图之间的相互作用307
15.8 CDocument::DeleteContents函数308
15.9 CObList集合类308
15.9.1 对先入先出列表使用CObList类309
15.9.2 在CObList中进行迭代——POSITION变量310
15.9.3 CTypedPtrList模板集合类311
15.9.4 信息转储环境及集合类312
15.10 EX15B示例程序313
15.10.1 资源要求314
15.10.2 代码要求315
15.10.3 CStudentDoc316
15.10.4 CStudentView320
15.10.5 测试EX15B应用程序330
15.11 留给读者的两个练习330
第十六章 读和写文档——SDI应用程序331
16.1 什么是序列化331
16.1.1 磁盘文件和归档(Archives)332
16.1.2 使类可序列化332
16.1.3 编写Serialize函数333
16.1.4 从归档中载入——内嵌对象和指针334
16.1.5 使集合序列化335
16.1.6 Serialize函数和应用程序框架336
16.2 SDI应用程序336
16.2.1 Windows应用程序对象336
16.2.2 文档模板类337
16.2.3 文档模板资源339
16.2.4 SDI文档的多视图339
16.2.5 创建空文档——CWinApp::OnFileNew函数339
16.2.6 文档类的OnNewDocument函数340
16.2.7 连接File Open与序列化代码——OnFileOpen函数340
16.2.8 文档类的DeleteContents函数341
16.2.9 将File Save和File Save As与序列化代码相连接341
16.2.10 文档的“脏”标志342
16.3 EX16A——序列化SDI示例程序342
16.3.1 CStudent343
16.3.2 CEx16aApp343
16.3.3 CFrameWnd348
16.3.4 CStudentDoc352
16.3.5 CStudentView353
16.3.6 测试EX16A应用程序353
16.4 从Explorer启动及拖放354
16.4.1 程序注册354
16.4.2 在文档上双击鼠标355
16.4.3 允许拖放355
16.4.4 程序启动参数356
16.4.5 试验用Explorer启动程序及拖放功能356
第十七章 读和写文档——MDI应用程序357
17.1 MDI应用程序357
17.1.1 一个典型的具有MFC库风格的MDI应用程序357
17.1.2 MDI应用程序对象360
17.1.3 MDI文档模板类360
17.1.4 MDI框架窗口和MDI子窗口360
17.1.5 主框架和文档模板资源361
17.1.6 创建空文档——CWinApp::OnFileNew函数362
17.1.7 为现有文档创建新的视图362
17.1.8 载入和存储文档363
17.1.9 多文档模板363
17.1.10 Explorer启动及拖放364
17.2 EX17A示例程序364
17.2.1 CEx17aApp365
17.2.2 CMainFrame370
17.2.3 CChildFrame373
17.2.4 测试EX17A应用程序376
第十八章 打印和打印预览377
18.1 Windows的打印377
18.1.1 标准打印对话框377
18.1.2 交互选择打印页码377
18.1.3 显示页和打印页379
18.2 打印预览379
18.3 有关打印机的程序设计380
18.3.1 打印机设备环境和CView::OnDraw函数380
18.3.2 CView::OnPrint函数380
18.3.3 准备设备环境——CView::OnPrepareDC函数380
18.3.4 打印任务的开始和结束381
18.4 EX18A示例程序——一个所见即所得的打印程序381
18.5 读取打印机矩形框388
18.6 再看模板集合类——CArray类388
18.7 EX18B示例程序——多页打印程序389
第十九章 切分窗口和多视图395
19.1 切分窗口395
19.2 多视图选择395
19.3 动态和静态切分窗口396
19.4 EX19A示例程序——具有单个视图类的SDI动态切分396
19.4.1 与切分有关的资源397
19.4.2 CMainFrame397
19.4.3 测试EX19A应用程序398
19.5 EX19B示例程序——双视图类SDI静态切分399
19.5.1 CHexView399
19.5.2 CMainFrame400
19.5.3 测试EX19B应用程序400
19.6 EX19C示例程序——切换没有切分的视图类401
19.6.1 资源要求401
19.6.2 CMainFrame401
19.6.3 测试EX19C应用程序403
19.7 EX19D示例程序——多视图类MDI应用程序403
19.7.1 资源要求404
19.7.2 CEx19dApp404
19.7.3 CMainFrame405
19.7.4 测试EX19D应用程序406
第二十章 上下文相关帮助407
20.1 Windows的WinHelp程序407
20.1.1 复文本格式(RTF)407
20.1.2 编写简单的帮助文件408
20.1.3 改进的Table Of Contents412
20.2 应用程序框架与WinHelp413
20.2.1 调用WinHelp414
20.2.2 使用搜索字符串414
20.2.3 从应用程序的菜单调用WinHHelp415
20.2.4 帮助上下文别名415
20.2.5 确定帮助上下文415
20.2.6 F1帮助416
20.2.7 Shift-F1帮助416
20.2.8 消息框帮助——AfxMessageBox函数417
20.2.9 一般的帮助417
20.3 帮助示例——不需要任何编程418
20.4 MAKEHELP处理420
20.5 帮助命令处理420
20.5.1 F1处理过程421
20.5.2 Shift-F1处理过程421
20.6 帮助命令处理示例程序——EX20B422
20.6.1 头文件要求422
20.6.2 CStringView422
20.6.3 CHexView423
20.6.4 资源要求424
20.6.5 帮助文件要求424
20.6.6 测试EX20B应用程序425
第二十一章 动态连接库426
21.1 基本DLL理论426
21.1.1 导入如何与导出相匹配427
21.1.2 隐式连接和显式连接427
21.1.3 符号连接和序号连接428
21.1.4 DLL入口点——DllMain429
21.1.5 实例句柄——装载资源429
21.1.6 客户程序如何找到DLL430
21.1.7 调试DLL430
21.2 MFC DLL——扩展的和正规的430
21.2.1 共享的MFC DLL和Windows DLL431
21.2.2 MFC扩展DLL——导出类432
21.2.3 MFC扩展DLL资源搜索的顺序432
21.2.4 EX21A示例程序——MFC扩展DLL433
21.2.5 EX21B示例程序——DLL测试客户程序435
21.2.6 MFC正规DLL——CWinApp派生类436
21.2.7 使用AFX_MANAGE_STATE宏436
21.2.8 MFC正规DLL资源搜索顺序436
21.2.9 EX21C示例程序——MFC正规DLL437
21.2.10 修改EX21B示例程序——加入代码以测试ex21c.dll438
21.3 自定义控件DLL440
21.3.1 什么是自定义控件440
21.3.2 自定义控件的窗口类440
21.3.3 MFC库和WndProc函数441
21.3.4 自定义控件通知消息441
21.3.5 发送给控件的用户定义消息442
21.3.6 EX21D示例程序——自定义控件442
21.3.7 再修改EX21B示例程序——加入代码以测试ex21d.dll448
第二十二章 不带文档或视图类的MFC程序452
22.1 EX22A示例程序——一个基于对话框的应用程序452
22.1.1 应用程序类InitInstance函数454
22.1.2 对话框类和程序图标455
22.2 EX22B示例——一个SDI应用程序456
22.2.1 应用程序类InitInstance函数457
22.2.2 CMainFrame类458
22.3 EX22C示例程序——一个MDI应用程序458
22.3.1 应用类程序InitInstance函数459
22.3.2 CMainFrame类460
22.3.3 CChildFrame类462
22.3.4 资源要求462
22.4 定制(Custom)AppWizard463
第四部分 ActiveX:组件对象模型、自动化和OLE第二十三章 组件对象模型467
23.1 ActiveX技术背景467
23.2 组件对象模型(COM)468
23.2.1 COM所解决的问题468
23.2.2 COM的本质468
23.2.3 什么是COM接口469
23.2.4 IUnknown接口和QueryInterface成员函数473
23.2.5 引用计数:AddRef和Release函数475
23.2.6 类厂(class factory)476
23.2.7 CCmdTarget类477
23.2.8 EX23A示例程序——一个模拟的COM478
23.3 MFC库中实际的COM486
23.3.1 COM的CoGetClassObject函数486
23.3.2 COM和Windows注册表487
23.3.3 运行时对象注册488
23.3.4 COM客户程序如何调用进程内组件489
23.3.5 COM客户程序如何调用进程外组件491
23.3.6 MFC接口宏493
23.3.7 MFC的COleObjectFactory类494
23.3.8 AppWizard/ClassWizard对COM进程内组件的支持494
23.3.9 MFC COM客户程序496
23.3.10 EX23B示例程序——MFC COM进程内组件496
23.3.11 EX23C示例程序——MFC COM客户501
23.4 包容、集合和继承502
第二十四章 自动化504
24.1 C++与Visual Basic for Applications(VBA)之间的连接504
24.2 自动化客户和自动化组件505
24.3 Microsoft Excel——一种比Visual Basic还好的Visual Basic505
24.4 属性(property)、方法(method)和集合(collection)507
24.5 自动化所解决的问题508
24.6 IDispatch接口508
24.7 自动化程序设计的选择509
24.8 MFC IDispatch的实现510
24.9 一个MFC自动化组件511
24.10 一个MFC自动化客户程序512
24.11 使用编译器#import指令的自动化客户程序514
24.12 VARIANT类型515
24.13 COleVariant类517
24.14 Invoke的参数和返回值的类型转换519
24.15 自动化示例521
24.15.1 EX24A自动化组件EXE示例——不带任何用户界面521
24.15.2 EX24B自动化组件DLL示例程序529
24.15.3 EX24C SDI自动化组件EXE示例——带用户界面538
24.15.4 EX24D自动化客户示例程序544
24.15.5 EX24E自动化客户示例程序559
24.16 VBA早绑定562
24.16.1 注册类型库563
24.16.2 组件如何注册自己的类型库564
24.16.3 ODL文件564
24.16.4 Excel如何使用类型库565
24.16.5 为什么使用早绑定567
24.16.6 客户-组件的快速连接567
第二十五章 统一数据传输——剪贴板传输以及OLE拖放568
25.1 IDataObject接口568
25.2 IDataObject如何增强标准剪贴板的支持568
25.3 FORMATETC和STGMEDIUM结构569
25.3.1 FORMATETC569
25.3.2 STGMEDIUM570
25.3.3 IDataObject接口成员函数570
25.4 MFC统一数据传输支持571
25.4.1 COleDataSource类572
25.4.2 COleDataObject类573
25.4.3 MFC数据对象剪贴板传输574
25.5 MFC CRectTracker类576
25.5.1 CRectTracker类成员函数576
25.5.2 CRectTracker类矩形坐标转换577
25.6 EX25A示例程序——数据对象剪贴板577
25.6.1 CMainFrame类578
25.6.2 CEx25aDoc类578
25.6.3 CEx25aView类578
25.7 MFC拖放587
25.7.1 传输的源方587
25.7.2 传输的目标方587
25.7.3 拖放的顺序588
25.8 EX25B示例程序——OLE拖放589
25.8.1 CEx25bDoc类589
25.8.2 CEx25bView类589
25.9 Windows应用程序和拖放——Dobjview592
第二十六章 结构化存储593
26.1 复合文件593
26.2 存储(Storage)和IStorage接口594
26.2.1 获取IStorage指针596
26.2.2 释放STATSTG内存596
26.2.3 对存储对象的元素进行枚举596
26.2.4 进程间共享存储597
26.3 流(Stream)和IStream接口597
26.3.1 IStream接口成员函数597
26.3.2 IStream编程598
26.4 ILockBytes接口599
26.5 EX26A示例程序——结构化存储599
26.5.1 菜单600
26.5.2 CEx26aView类600
26.5.3 辅助线程600
26.6 结构化存储和持久COM对象604
26.6.1 IPersistStorage接口605
26.6.2 IPersistStream接口606
26.6.3 IPersistStream编程606
26.7 EX26B示例程序——一个持久DLL组件607
26.8 EX26C示例程序——一个持久存储客户程序613
26.9 复合文件碎片的处理617
26.10 复合文件的其他优点618
第二十七章 OLE嵌入组件和包容器619
27.1 嵌入和实地激活(可视编辑)619
27.2 最小服务器和完备服务器(组件)——链接620
27.3 可视编辑前景暗淡的一面620
27.4 Windows图元文件和内嵌对象621
27.5 组件程序的MFC OLE结构622
27.6 EX27A示例程序——MFC实地激活最小服务器623
27.6.1 MDI嵌入组件627
27.6.2 实地组件调整大小的思路628
27.7 包容器-组件相互作用628
27.7.1 使用组件的IOleObject接口629
27.7.2 装入和保存组件自身的数据——组件文档630
27.7.3 剪贴板数据传输630
27.7.4 获得组件的图元文件630
27.7.5 进程内控制器的角色631
27.8 组件状态632
27.8.1 包容器接口632
27.8.2 通报连接633
27.8.3 剪贴板图元文件634
27.9 接口简要说明634
27.9.1 IOleObject接口634
27.9.2 IViewObject2接口635
27.9.3 IOleClientSite接口635
27.9.4 IAdviseSink接口636
27.10 OLE辅助函数636
27.11 OLE嵌入包容器应用程序637
27.11.1 MFC对OLE包容器的支持637
27.11.2 一些包容器限制638
27.11.3 包容器特性638
27.12 EX27B示例程序——嵌入包容器638
27.12.1 CEx27bView类639
27.12.2 CEx27bDoc类652
27.13 EX27C示例程序——OLE嵌入组件660
27.13.1 CEx27cView类661
27.13.2 CEx27cDoc类661
第五部分 数据库管理671
第二十八章 Microsoft ODBC数据库管理671
28.1 数据库管理的优势671
28.2 结构化查询语言672
28.3 ODBC标准673
28.3.1 ODBC结构673
28.3.2 ODBC SDK编程674
28.4 MFC ODBC类——CRecordset和CDatabase675
28.4.1 记录集中关于行的计数677
28.4.2 处理ODBC异常677
28.5 学生注册数据库678
28.6 EX28A记录集示例程序678
28.7 EX28A示例程序中的元素684
28.7.1 记录集类与应用程序之间的连接684
28.7.2 CEx28aView类的OnInitialUpdate成员函数684
28.7.3 CEx28aView类的OnDraw成员函数685
28.8 筛选器和排序字符串686
28.9 连接两个数据库表686
28.10 MFC CRecordView类687
28.11 EX28B记录查看示例程序688
28.12 多记录集693
28.12.1 EX28C多记录集示例程序694
28.12.2 参数化查询695
28.13 ODBC多线程696
28.14 大批行数据获取(bulk row fetch)696
28.15 使用不带绑定的记录集696
第二十九章 Microsoft Data Access Objects数据库管理699
29.1 DAO、COM和Microsoft Jet数据库引擎699
29.2 DAO和VBA699
29.3 DAO和MFC700
29.4 利用DAO可以打开什么样的数据库701
29.5 按ODBC模式使用DAO——快照和动态集701
29.6 DAO表类型记录集702
29.7 DAO QueryDef和TableDef703
29.8 DAO多线程情况703
29.9 在滚动窗口中显示数据库的行703
29.9.1 滚动显示方法703
29.9.2 一个行-视图类704
29.9.3 基类和派生类的分工处理705
29.9.4 CRowView的纯虚成员函数706
29.9.5 其他的CRowView函数706
29.10 动态记录集的编程707
29.11 EX29A示例程序708
29.11.1 CEx29aApp709
29.11.2 CMainFrame和CChildFrame709
29.11.3 CEx29aDoc709
29.11.4 CEx29aView716
29.11.5 CTableSelect719
29.11.6 CIsamSelect720
29.12 EX29A资源文件721
29.13 运行EX29A程序722
第六部分 Internet程序设计725
第三十章 TCP/IP、Winsock和WinInet725
30.1 既针对COM也可以不需要COM725
30.2 Internet基础725
30.2.1 网络协议——层726
30.2.2 Internet协议726
30.2.3 用户报文协议727
30.2.4 IP地址格式——网络字节顺序728
30.2.5 传输控制协议729
30.2.6 域名系统(Domain Name System)730
30.2.7 HTTP基础732
30.2.8 FTP基础734
30.2.9 Internet和Intranet734
30.3 建立自己的价值$99的Intranet734
30.3.1 NT文件系统和文件分配表735
30.3.2 网络硬件735
30.3.3 对Windows进行网络配置735
30.3.4 Intranet的主机名——HOSTS文件736
30.3.5 测试Intranet——Ping程序736
30.3.6 只有一台计算机的Intranet——TCP/IP环形地址736
30.4 Winsock737
30.4.1 同步和异步Winsock编程737
30.4.2 MFC Winsock类737
30.4.3 Blocking Socket类737
30.4.4 一个简化了的HTTP服务器程序745
30.4.5 一个简化了的HTTP客户端程序747
30.5 用CHttpBlockingSocket创建一个Web服务器程序749
30.5.1 EX30A服务器限制749
30.5.2 EX30A服务器结构749
30.5.3 使用Win32 TransmitFile函数750
30.5.4 编译和测试EX30A751
30.5.5 使用Telnet752
30.6 用CHttpBlockingSocket创建一个Web客户端程序752
30.6.1 EX30A Winsock客户752
30.6.2 EX30A对代理服务器的支持753
30.6.3 测试EX30A Winsock客户753
30.7 WinInet753
30.7.1 WinInet相对于Winsock的优势754
30.7.2 MFC WinInet类754
30.7.3 Internet会话状态回调756
30.7.4 一个简化了的WinInet客户程序757
30.8 用MFC WinInet类创建一个Web客户758
30.8.1 EX30A WinInet Client #1——使用CHttpConnection758
30.8.2 测试WinInet Client #1758
30.8.3 EX30A WinInet Client #2——使用OpenURL759
30.8.4 测试WinInet Client #2760
30.9 异步Moniker文件760
30.9.1 Moniker760
30.9.2 MFC CAsyncMonikerFile类760
30.9.3 在程序中使用CAsyncMonikerFile类760
30.9.4 异步moniker文件和WinInet编程761
第三十一章 Microsoft Internet Information Server编程763
31.1 IIS的替代产品763
31.2 Microsoft IIS763
31.2.1 安装和控制IIS763
31.2.2 运行Internet Service Manager764
31.2.3 IIS的安全性764
31.2.4 IIS目录765
31.2.5 IIS日志记录766
31.2.6 测试IIS766
31.3 ISAPI服务器扩展767
31.3.1 通用网关接口和ISAPI767
31.3.2 一个简单的ISAPI服务器扩展GET请求767
31.3.3 HTML窗体——GET和POST768
31.3.4 编写ISAPI服务器扩展DLL769
31.3.5 MFC ISAPI服务器扩展类770
31.4 一个实际的ISAPI服务器扩展——ex31a.dll771
31.4.1 第一步——获取定单772
31.4.2 第二步——处理确认窗体775
31.4.3 编译并测试ex31a.dll776
31.4.4 调试EX31A DLL776
31.5 ISAPI数据库访问777
31.6 使用HTTP Cookie来连接事务778
31.6.1 Cookie如何工作778
31.6.2 ISAPI服务器扩展如何处理Cookie779
31.6.3 使用Cookie的一些问题779
31.7 WWW鉴定779
31.7.1 基本鉴定779
31.7.2 Windows NT问讯/应答鉴定780
31.7.3 安全套接字层(SSL)780
31.8 ISAPI过滤器781
31.8.1 编写ISAPI过滤器DLL781
31.8.2 MFC ISAPI过滤器类781
31.9 ISAPI过滤器示例——ex31b.dll、ex31c.exe782
31.9.1 选择通知783
31.9.2 把事务数据发送到显示程序783
31.9.3 显示程序785
31.9.4 编译并测试EX31B ISAPI过滤器785
第三十二章 ActiveX文档服务器和Internet787
32.1 ActiveX文档理论787
32.1.1 ActiveX文档服务器和OLE嵌入服务器787
32.1.2 从IE3中运行ActiveX文档服务器788
32.1.3 ActiveX文档服务器和ActiveX控件789
32.1.4 ActiveX文档服务器和包容器的OLE接口790
32.1.5 MFC对ActiveX文档服务器的支持790
32.2 ActiveX文档服务器示例程序EX32A791
32.2.1 EX32A第一阶段——简单的服务器792
32.2.2 调试ActiveX文档服务器792
32.2.3 EX32A第二阶段——加入WinInet调用792
32.3 ActiveX文档服务器示例程序EX32B794
32.3.1 在程序控制下产生POST请求799
32.3.2 EX32B视图类800
32.3.3 编译并测试EX32B802
32.3.4 ActiveX文档服务器和VB Script802
32.4 进一步使用ActiveX文档服务器803
附录A Microsoft基本类(MFC)库中的消息映射函数804
附录B MFC库运行时类识型和动态对象创建810