
Visual C++ 技术内幕(第四版)
《VisualC++技术内幕(第四版)》是1999年清华大学出版社出版的图书,作者是DavidJ.Kruglinski。
基本介绍
- 作者:David J. Kruglinski
- 译者:潘爱民/王国印
- ISBN:9787302032434
- 页数:814
- 定价:96.00元
- 出版社:清华大学出版社
- 出版时间:1999-1
- 装帧:Paperback
内容介绍
在前三版的基础上,本书向读者详尽地介绍了Visual C++开发系统和複杂的32位Windows编程技术,全面诠释了Microsoft 的这个强大而複杂的开发工具的功能。
本书从对Windows,Visual C++和应用程式框架的技术性概述入手,讨论了下列课题:基础知识——事件处理,GDI,对话框,记忆体管理,SDI和MDI,列印,以及帮助;高级课题——多执行绪,DIB,ODBC,DLL等等。
作者介绍
作者简介
DavidKruglinski是一位自学成才的、杰出的程式设计员、作家、教师和户外活动家。
自从1966年加入Purdue大学,他就开始了程式设计生涯;1976年他的一位朋友从垃圾
箱中发现了一块8080板,从那以后他就开始针对微机编写应用程式。
《VisualC++技术内幕》是David的第五本书。1992年他为Microsoft出版社写了该书的
第一版。该书赢得了很大的成功并受到了读者的广泛欢迎。作为最畅销的书,该书现在已
经到第四版了;在为Microsoft出版社写作之前,David编写了四本书,涉及的内容从微机数据
库管理系统一直到PC通信。
由于他在写作和程式设计方面的出色表现,1991年中期他与Microsoft基本类库(MFC)
1.0版本的文档小组建立了正式契约关係。在大多数MFC参考材料,特别是对一些基本类
如CString等的说明中,我们不难看到David的精闢论述。当1992年MicrosoftC/C++7.0正
式推出时,他离开了Microsoft语言开发小组,专门从事《VisualC++技术内幕》的写作。
David被公认为MFC和VisualC++语言这两方面技术的权威。他成功地发起组织了软
件工具研究小组,併兼作MicrosoftVisualC++的顾问和指导。他经常驾驶着他的滑翔机,在
各地授课、做报告、参加会议等。David通过与Microsoft的密切合作,紧密跟蹤着最新的软体
发展方向。他经常去拜访VisualC++开发小组的成员,从而得以不断跟蹤新的发展,并深入
研究MFC中的一些新技术,如OLE、资料库和Internet等。
作为一个週游世界的旅行家和户外活动爱好者,David经常徒步旅行和爬山,他从不闲
着。从80年代后期他开始滑翔机运动,在过去的几年中,作为一个优秀的飞行员,他赢得了
国际级的名誉。David是一个大胆的、非传统的飞行员,他时而翱翔在高山上,时而低飞在山
谷中,充分领略了从欧洲到北美洲的壮观美景。他不断刷新新的记录,包括空中停留时间、
旅行距离、飞行高度。
“顺风去吧,Dave。”1997年4月17日,Kruglinski在华盛顿州OKanogan 郡Methow峡谷飞
行时不幸遇难,终年49岁。
“据说,当藏族人面对危险,或者当他们要穿过雪山和大河时,他们会喊,‘每个活着的人100
年后都会死,所以又有什幺可害怕的呢?’Dave就是这样的人,但他没有喊。”
LowellSkoog,滑翔机飞行伙伴
作品目录
目录
前言
第一部分 Windows、VisualC++和应用程式框架基础
第一章 MicrosoftWindows 和VisualC++
1.1Windows的编程模式
1.1.1讯息处理
1.1.2Windows的图形设备接口(GDI)
1.1.3基于资源的程式设计
1.1.4记忆体管理
1.1.5动态连线库(DLL)
1.1.6Win32应用程式编程接口
1.2VisualC++的组成
1.2.1MicrosoftDeveloperStudio97和创建过程
1.2.2资源编辑器――WorkspaceResourceView
1.2.3C/C++编译器
1.2.4资源编译器
1.2.5连线器
1.2.6调试器
1.2.7AppWizard
1.2.8ClassWizard
1.2.9源程式浏览器
1.2.10在线上帮助
1.2.11Windows诊断工具
1.2.12原始码控制
1.2.13Gallery
1.2.14Microsoft基本类库4.21版
1.2.15MicrosoftActiveX 模板库
第二章 Microsoft基本类库应用程式框架
2.1为什幺要使用应用程式框架
2.1.1学习曲线
2.2什幺是应用程式框架
2.2.1应用程式框架和MFC库
2.2.2应用程式框架示例
2.3MFC库讯息映射
2.3.1文档和视图
第二部分 MFC 库中的视图类
第三章 从“Hello,world!”着手学习AppWizard
3.1什幺是视图
3.2单文档界面(SDI)和多文档界面(MDI)
3.3“不做任何事情”的应用程式
3.4CEx03aView视图类
3.5在视窗内绘图――Windows的图形设备接口
3.5.1OnDraw成员函式
3.5.2Windows设备环境
3.5.3往EX03A程式中加入绘製代码
3.6资源编辑器简介
3.6.1ex03a.rc的内容
3.6.2运行对话框资源编辑器
3.7Win32Debug目标和Win32Release目标
3.8允许诊断宏
3.9对预编译头档案的理解
3.10两种方法运行程式
第四章 基本事件处理、映射模式和滚动视图
4.1获取用户输入――讯息映射函式
4.1.1讯息映射
4.1.2保存视图的状态-类数据成员
4.1.3初始化视图类数据成员
4.1.4使矩形区域无效
4.1.5Windows 的客户区域
4.1.6CRect,CPoint和CSize类的运算
4.1.7一个点是否在矩形内
4.1.8CRect的LPRECT操作符
4.1.9一个点是否在椭圆内
4.2Ex04A示例程式
4.3对EX04A使用ClassWizard
4.3.1同时使用AppWizard 和Clas sWizard
4.4映射模式
4.4.1MM_TEXT映射模式
4.4.2“固定比例”映射模式
4.4.3“可变比例”映射模式
4.4.4坐标变换
4.4.5EX04B示例程式――转换到MM_HIMETRIC映射模式
4.5滚动视窗
4.5.1视窗比人们所见到的要大
4.5.2滚动条
4.5.3滚动方式的选择
4.5.4 OnInitialUpdate函式
4.5.5接收键盘输入
4.5.6EX04C滚动示例程式
4.6其他Windows讯息
4.6.1WM_CREATE讯息
4.6.2WM_CLOSE讯息
4.6.3WM_QUERYENDSESSION讯息
4.6.4WM_DESTROY讯息
4.6.5WM_NCDESTROY讯息
第五章 图形设备接口(GDI)、颜色及字型
5.1设备环境类
5.1.1显示设备环境类CClientDC和CWindowDC
5.1.2构造和析构CDC对象
5.1.3设备环境的状态
5.1.4CPaintDC类
5.2GDI对象
5.2.1GDI对象的构造与析构
5.2.2跟蹤GDI对象
5.2.3库存的GDI对象
5.2.4GDI选择的有效期
5.3Windows的颜色映射
5.3.1标準视频图形阵列(V以)显示卡
5.3.2256色显示卡
5.3.316位颜色显示卡
5.3.424位颜色显示卡
5.4字型
5.4.1字型是GDI对象
5.4.2选择字型
5.4.3列印字型
5.4.4 显示字型
5.4.5显示器的逻辑英寸和物理英寸
5.4.6计算字元高度
5.5EXO5A示例程式
5.5.1EX05A程式的组成元素
5.6EX05B程式
5.6.1EX0 5B程式的组成元素
5.7EX05C示例程式――再次使用CScrollView
5.7.1EX0 5C程式的组成元素
5.7.2CScrollView的SetScaleToFitSize模式
5.7.3在滚动视图中使用逻辑twips映射模式
第六章 模式对话框和Windows通用控制项
6.1模式和无模式对话框
6.2资源和控制项
6.3模式对话框的编程
6.4包罗万象的对话框――EX06A示例程式
6.4.1创建对话框资源
6.4.2ClassWizard和对话框类
6.4.3将对话框与视图相连线
6.4.4深入理解EX06A应用程式
6.5对话框程式的改进
6.5.1获得OnOK退出控制
6.5.2OnCancel处理
6.5.3和滚动条控制项挂上钩
6.6控制项的标识:CWnd指针和控制项ID
6.7设定对话框的背景色和其中控制项的颜色
6.8在对话框视窗内绘图
6.9在运行时加入对话框控制项
6.10利用其他的控制项特性
6.11Windows通用控制项
6.11.1进度指示器控制项
6.11.2滑桿条(Trackbar)控制项
6.11.3微调按钮控制项
6.11.4列表控制项
6.11.5树状控制项
6.11.6WM NOTIFY讯息
6.12EX06B示例程式
6.13其他Windows 通用控制项
第七章 无模式对话框和Windows通用对话框类
7.1无模式对话框
7.1.1创建无模式对话框
7.1.2用户定义的讯息
7.1.3对话框的归属
7.1.4无模式对话框的例子――EX07A
7.2CFormView类――另外一种可供选择的无模式对话框
7.3Windows通用对话框
7.3.1直接使用CFileDialog类
7.3.2从通用对话框类进行派生
7.3.3嵌套对话框
7.3.4使用CFileDialog的一个例子――EX07B
7.3.5CFileDialog的其他可定製特性
第八章 使用ActiveX控制项
8.1ActiveX控制项和普通的Windows控制项
8.1.1普通的Windows 控制项――参考体系
8.1.2ActiveX控制项与普通控制项的相同点
8.1.3ActiveX控制项与普通控制项的不同点――属性和方法
8.2安装ActiveX控制项
8.3日曆控制项
8.4ActiveX控制项包容器编程
8.4.1属性访问
8.4.2ClassWizard为ActiveX控制项产生的C++类
8.4.3AppWizard对ActiveX控制项的支持
8.4.4ClassWizard和包容器对话框
8.4.5对话框类数据成员和控制项类的用法
8.4.6映射ActiveX控制项事件
8.4.7把ActiveX控制项锁定在记忆体里
8.5EX08A示例程式――ActiveX控制项对话框包容器
8.6ActiveX控制项在HTML档案中的使用
8.7在运行时创建ActiveX控制项
8.8EX08B示例程式――Web浏览器ActiveX控制项
8.9EX08C示例程式――一个完整的双视窗浏览器
8.10图形属性
8.11约束属性――改变通知
8.12其他的ActiveX控制项
第九章 Win32记忆体管理
9.1进程和记忆体空间
9.1.1Windows95进程地址空间
9.1.2WindowsNT进程地址空间
9.2虚拟记忆体如何工作
9.3VirtualAlloc函式――占用和保留记忆体
9.4Windows 堆和GlobalAlloc 函式族
9.5小记忆体堆,C++的new和delete操作符,_heapmin
9.6记忆体映射档案
9.7访问资源
9.8管理动态记忆体的一些提示
9.9常量数据的最佳化存储
第十章 点阵图
10.1GDI点阵图和与设备无关的点阵图
10.2彩色点阵图和单色点阵图
10.3使用GDI点阵图
10.3.1从资源中装人GDI点阵图
10.3.2显示映射模式的作用
10.3.3对位进行伸缩处理
10.3.4EX10A示例程式
10.4利用点阵图改进萤幕显示
10.4.1EX10B示例程式
10.4.2Windows动画
10.5DIB和CDib类
10.5.1关于调色板编程的术语
10.5.2DIB、象素和颜色表
10.5.3BMP档案中DIB的结构
10.5.4DIB访问函式
10.5.5CDib类
10.5.6DIB显示性能
10.5.7EX10C示例程式
10.6进一步使用DIB
10.6.1Load Image函式
10.6.2DrawDibDraw函式
10.7在按钮上设定点阵图
10.7.1EX10D示例程式
10.7.2进一步使用点阵图按钮
第十一章 Wind0ws讯息处理和多执行绪编程
11.1Windows讯息处理
11.1.1单执行绪程式处理讯息的过程
11.1.2交出控制
11.1.3计时器
11.1.4EX11A示例程式
11.2空状态处理
11.3多执行绪编程
11.3.1编写辅助执行绪函式和启动执行绪
11.3.2主执行绪如何和辅助执行绪通话
11.3.3辅助执行绪如何和主执行绪通话
11.3.4EX11B示例程式
11.3.5用事件使执行绪同步
11.3.6EX11C示例程式
11.3.7执行绪阻塞
11.3.8排斥区
11.3.9互斥体(mutex)和信号
11.3.10用户界面执行绪(UI执行绪)
第三部分 文档-视图结构
第十二章 选单、键盘加速键、复文本编辑控制项和属性表
12.1主框架视窗和文档类
12.2Windows的选单
12.3键盘加速键
12.4命令处理
12.4.1派生类中的命令讯息控制
12.4.2更新命令用户界面讯息控制函式
12.4.3对话框传送的命令
12.5应用程式框架的内含选单项
12.6选单项的允许/禁用
12.7MFC文本编辑选择
12.7.1CE出tView类
12.7.2CRichEditView类
12.7.3CRichEditCtrl类
12.8ex12A示例程式
12.9属性表
12.9.1创建属性表
12.9.2属性表数据交换
12.10改进EX12A示例程式
12.11Apply按钮的处理过程
12.12CMenu类
12.13创建浮动的弹出式选单
12.14扩展命令处理
第十三章 工具列和状态栏
13.1控制栏和应用程式框架
13.2工具列
13.2.1工具列点阵图
13.2.2按钮的状态
13.2.3工具列和命令讯息
13.2.4工具列更新命令UI讯息控制函式
13.3工具提示
13.4寻找主框架视窗
13.5EX13A工具列示例程式
13.6状态栏
13.6.1状态栏的定义
13.6.2信息行
13.6.3状态指示器
13.6.4获得对状态栏的控制
13.7EX13B状态栏示例程式
第十四章 可重用框架视窗基类
14.1为什幺可重用基类难以设计
14.2CPersistentFrame类
14.3CFrameWnd类和ActivateFrame成员函式
14.4PreCreateWindow成员函式
14.5Windows注册表
14.6使用CString类
14.7最大化视窗的位置
14.8控制栏状态和注册表
14.9静态数据成员
14.10默认视窗矩形
14.11EX14A示例程式
14.12MDI应用程式中的持续框架
第十五章 文档与视图的分离
15.1文档-视图之间的相互作用函式
15.1.1CView∷GetDocument函式
15.1.2CDocumeat∷UpdateAllViews 函式
15.1.3CView∷OnUpdate函式
15.1.4CView∷OnInitialUpdate函式
15.1.5CDocument∷OnNewDocument函式
15.2最简单的文档-视图应用程式
15.3CFormViiew类
15.4CObject类
15.5诊断信息转储
15.5.1TRACE宏
15.5.2atxDump对象
15.5.3信息转储环境及CObjct类
15.5.4未被删除对象的自动信息转储
15.6EX15A示例程式
15.7更加高级的文档-视图之间的相互作用
15.8CDocument∷DeleteContents函式
15.9CObList集合类
15.9.1对先人先出列表使用CObList类
15.9.2在COblIst中进行叠代――POSITION变数
15.9.3CTypedPtrList模板集合类
15.9.4信息转储环境及集合类
15.10 EX15B示例程式
15.10.1资源要求
15.10.2代码要求
15.10.3CStudentDoc
15.10.4CStudentView
15.10.5测试EX15B应用程式
15.11留给读者的两个练习
第十六章 读和写文档――SDI应用程式
16.1什幺是序列化
16.1.1磁碟档案和归档(Archives)
16.1.2使类可序列化
16.1.3编写Serialize函式
16.1.4 从归档中载人――内嵌对象和指针
16.1.5使集合序列化
16.1.6Serialize函式和应用程式框架
16.2SDI应用程式
16.2.1Windows应用程式对象
16.2.2文档模板类
16.2.3文档模板资源
16.2.4SDI文档的多视图
16.2.5创建空文档――CWinApp∷OnFileNew函式
16.2.6文档类的OnNewDocument函式
16.2.7连线FileOpe n与序列化代码――OnFileOpen函式
16.2.8文档类的DeleteContents函式
16.2.9将FileSave和FileSaveAs与序列化代码相连线
16.2.10 文档的“髒”标誌
16.3EX16A――序列化SDI示例程式
16.3.1CStudent
16.3.2CEx16aApp
16.3.3CFrameWnd
16.3.4CStudentDoc
16.3.5cStudentView
16.3.6测试EX16A应用程式
16.4从Explorer启动及拖放
16.4.1程式注册
16.4.2在文档上双击滑鼠
16.4.3允许拖放
16.4.4程式启动参数
16.4.5试验用Explorer启动程式及拖放功能
第十七章 读和写文档――MDI应用程式
17.1MDI应用程式
17.1.1一个典型的具有MFC库风格的MDI应用程式
17.1.2MDI应用程式对象
17.1.3MDI文档模板类
17.1.4MDI框架视窗和MDI子视窗
17.1.5主框架和文档模板资源
17.1.6创建空文档――CWinApp OnFileNew函式
17.1.7为现有文档创建新的视图
17.1.8载人和存储文档
17.1.9多文档模板
17.1.10Explorer启动及拖放
17.2EX17A示例程式
17.2.1CEx17aApp
17.2.2CMainFrame
17.2.3CChildFrame
17.2.4 测试EX17A应用程式
第十八章 列印和列印预览
18.1Windows的列印
18.1.1标準列印对话框
18.1.2互动选择列印页码
18.1.3显示页和列印页
18.2列印预览
18.3有关印表机的程式设计
18.3.1印表机设备环境和CViewOnDraw函式
18.3.2CView OnPrint函式
18.3.3準备设备环境――CView OnPrePareDC函式
18.3.4列印任务的开始和结束
18.4EX18A示例程式――一个所见即所得的列印程式
18.5读取印表机矩形框
18.6再看模板集合类――CArray类
18.7EX18B示例程式――多页列印程式
第十九章 切分视窗和多视图
19.1切分视窗
19.2多视图选择
19.3动态和静态切分视窗
19.4EX19A示例程式――具有单个视图类的SDI动态切分
19.4.1与切分有关的资源
19.4.2CMainFrame
19.4.3测试EX19A应用程式
19.5EX19B示例程式――双视图类SDI静态切分
19.5.1CHexView
19.5.2CMainFrame
19.5.3测试EX19B应用程式
19.6EX19C示例程式――切换没有切分的视图类
19.6.1资源要求
19.6.2CMainFrame
19.6.3测试Ex19C应用程式
19.7Ex19D示例程式――多视图类MDI应用程式
19.7.1资源要求
19.7.2CEx19dApp
19.7.3CMainFrame
19.7.4测试EX19D应用程式
第二十章 上下文相关帮助
20.1Windows 的WinHe lp程式
20.1.1复文本格式(RTF)
20.1.2编写简单的帮助档案
20.1.3改进的TableOfContents
20.2应用程式框架与WinHelp
20.2.1调用WinHelp
20.2.2使用搜寻字元串
20.2.3从应用程式的选单调用WinHelp
20.2.4帮助上下文别名
20.2.5确定帮助上下文
20.2.6F1帮助
20.2.7Shift-F1帮助
20.2.8讯息框帮助――AfxMessageBox 函式
20.2.9一般的帮助
20.3帮助示例――不需要任何编程
20.4MAKEHEL处理
20.5帮助命令处理
20.5.1F1处理过程
2.5.2Shift-F1处理过程
20.6帮助命令处理示例程式――EX20 B
20.6.1头档案要求
20.6.2CStringView
20.6.3CHexView
20.6.4资源要求
20.6.5帮助档案要求
20.6.6测试EX20B应用程式
第二十一章 动态连线库
21.1基本DLL理论
21.1.1导人如何与导出相匹配
21.1.2隐式连线和显式连线
21.1.3符号连线和序号连线
21.1.4DLL人口点――DllMain
21.1.5实例句柄――装载资源
21.1.6客户程式如何找到DLL
21.1.7调试DLL
21.2MFcDLL――扩展的和正规的
21.2.1共享的MFCDLL和WindowsDLL
21.2.2MFC扩展DLL――导出类
21.2.3MFC扩展DLL资源搜寻的顺序
21.2.4EX21A示例程式――MFC扩展DLL
21.2.5EX21B示例程式――DLL测试客户程式
21.2.6MFC正规DLL――CWinApp派生类
21.2.7使用AFX_MANAGE_STATE宏
21.2.8MFC正规DLL资源搜寻顺序
21.2.9EX21C示例程式――MFC正规DLL
21.2.10修改EX21B示例程式――加入代码以测试ex21c.dll
21.3自定义控制项DLL
21.3.1什幺是自定义控制项
21.3.2自定义控制项的视窗类
21.3.3MFC库和WndProc函式
21.3.4自定义控制项通知讯息
21.3.5传送给控制项的用户定义讯息
21.3.6EX2 1D示例程式――自定义控制项
21.3.7再修改EX2 1B示例程式――加入代码以测试ex21d.dll
第二十二章 不带文档或视图类的MFC程式
22.1EX22A示例程式――一个基于对话框的应用程式
22.1.1应用程式类InitInstance函式
22.1.2对话框类和程式图示
22.2EX22B示例――一个SDI应用程式
22.2.1应用程式类InitInstance函式
22.2.2CMainFrame类
22.3EX22C示例程式――一个MDI应用程式
22.3.1套用类程式InitInstance函式
22.3.2CMainFrame类
22.3.3CChildFrame类
22.3.4资源要求
22.4定製(Custom)AppWizard
第四部分 ActiveX:组件对象模型、自动化和OLE
第二十三章 组件对象模型
23.1ActiveX技术背景
23.2组件对象模型(COM)
23.2.1COM所解决的问题
23.2.2COM的本质
23.2.3什幺是COM接口
23.2.4IUnknown接口和QueryInterface成员函式
23.2.5引用计数:AddRdf和Release函式
23.2.6类厂(classfactory)
23.2.7CCmdTarget类
23.2.8EX23A示例程式――一个模拟的COM
23.3MFC库中实际的COM
23.3.1COM的CoGetClassObject函式
23.3.2COM和Windows注册表
23.3.3运行时对象注册
23.3.4COM客户程式如何调用进程内组件
23.3.5COM客户程式如何调用进程外组件
23.3.6MFC接口宏
23.3.7MFC的COleObjectFactory类
23.3.8AppWizard/ClassWizard对COM进程内组件的支持
23.3.9MFCCOM客户程式
23.3.10EX23B示例程式――MFCCOM进程内组件
23.3.11EX23C示例程式――MFCCOM客户
23.4包容、集合和继承
第二十四章 自动化
24.1C++与VisualBasicforApplications(VBA)之间的连线
24.2自动化客户和自动化组件
24.3MicrosoftExcel――一种比VisualBasic还好的VisualBasic
24.4属性(property)、方法(method)和集合
24.5自动化所解决的问题
24.6IDispatch接口
24.7自动化程式设计的选择
24.8MFCIDispatch的实现
24.9一个MFC自动化组件
24.10一个MFC自动化客户程式
24.11使用编译器#import指令的自动化客户程式
24.12VARIANT类型
24.13COleVariant类
24.14Invoke的参数和返回值的类型转换
24.15自动化示例
24.15.1EX24A自动化组件EXE示例――不带任何用户界面
24.15.2EX24B自动化组件DLL示例程式
24.15.3EX24CSDI自动化组件EXE示例――带用户界面
24.15.4EX24D自动化客户示例程式
24.15.5EX24E自动化客户示例程式
24.16VBA早绑定
24.16.1注册类型库
24.16.2组件如何注册自己的类型库
24.16.3ODL档案
24.16.4Excel如何使用类型库
24.16.5为什幺使用早绑定
24.16.6客户-组件的快速连线
第二十五章 统一数据传输――剪贴簿传输以及OL拖放
25.1IDataO bject接口
25.2IDataObject如何增强标準剪贴簿的支持
25.3FORMATETC和STGMEDIUM结构
25.3.1FORMATETC
25.3.2STGMEDTUM
25.3.3IDataObject接口成员函式
25.4MFC统一数据传输支持
25.4.1COleDataSource类
25.4.2COleDataObject类
25.4.3MFC数据对象剪贴簿传输
25.5MFCCRectTracker类
25.5.1CRectTracker类成员函式
25.5.2CRectTracker类矩形坐标转换
25.6EX25A示例程式――数据对象剪贴簿
25.6.1CMainFrame类
25.6.2CE25aDoc类
25.6.3CEx25aView类
25.7MFC拖放
25.7.1传输的源方
25.7.2传输的目标方
25.7.3拖放的顺序
25.8EX25B示例程式――OLE拖放
25.8.1CEx25bDoc类
25.8.2CEx25bView类
25.9Windows应用程式和拖放――Dobjview
第二十六章 结构化存储
26.1複合档案
26.2存储(Storage)和IStorage接口
26.2.1获取IStorage指针
26.2.2释放STATSTG记忆体
26.2.3对存储对象的元素进行枚举
26.2.4进程间共享存储
26.3流(Stream)和IStream接口
26.3.1IStream接口成员函式
26.3.2IStream编程
26.4ILockBytes接口
26.5EX26A示例程式――结构化存储
26.5.1选单
26.5.2CEx26aView类
26.5.3辅助执行绪
26.6结构化存储和持久COM对象
26.6.1IPersistStorage 接口
26.6.2IPersistStream接口
26.6.3IpersistStream编程
26.7EX2 6B示例程式――一个持久DLL组件
26.8EX26C示例程式――一个持久存储客户程式
26.9複合档案碎片的处理
26.10複合档案的其他优点
第二十七章 OLE嵌入组件和包容器
27.1嵌入和实地激活(可视编辑)
27.2最小伺服器和完备伺服器(组件)――连结
27.3可视编辑前景暗淡的一面
27.4Windows 图元档案和内嵌对象
27.5组件程式的MFCOLE结构
27.6EX27A示例程式――MFC实地激活最小伺服器
27.6.1MDI嵌入组件
27.6.2实地组件调整大小的思路
27.7包容器-组件相互作用
27.7.1使用组件的IOleObject接口
27.7.2装人和保存组件自身的数据――组件文档
27.7.3剪贴簿数据传输
27.7.4获得组件的图元档案
27.7.5进程内控制器的角色
27.8组件状态
27.8.1包容器接口
27.8.2通报连线
27.8.3剪贴簿图元档案
27.9接口简要说明
27.9.1IOleObject接口
27.9.2IViewObject2接口
27.9.3IOleClientSite接口
27.9.4IAdviseSink接口
27.10OLE辅助函式
27.11OLE嵌入包容器应用程式
27.11.1MFC对OLE包容器的支持
27.11.2一些包容器限制
27.11.3包容器特性
27.12EX27B示例程式――嵌入包容器
27.12.1CEx27bView类
27.12.2CEx27bDoc类
27.13 EX27C示例程式――OLE嵌入组件
27.13.1CEx27cView类
27.13.2CEx27cDoc类
第五部分 资料库管理
第二十八章 MicrosoftODBC资料库管理
28.1资料库管理的优势
28.2结构化查询语言
28.3ODBC标準
28.3.1ODBC结构
28.3.2ODBCDK编程
28.4MFCODBC类――CRecordset和CDatabase
28.4.1记录集中关于行的计数
28.4.2处理odbc异常
28.5学生注册资料库
28.6EX28A记录集示例程式
28.7Ex28A示例程式中的元素
28.7.1记录集类与应用程式之间的连线
28.7.2CEx28aView类的OnInitialUpdate成员函式
28.7.3CEx28aView类的OnDraw成员函式
28.8筛选器和排序字元串
28.9连线两个资料库表
28.10MFCCRecordView类
28.11EX28B记录查看示例程式
28.12多记录集
28.12.1EX28C多记录集示例程式
28.12.2参数化查询
28.13ODBC多执行绪
28.14大批行数据获取(bulkrow fetch)
28.15使用不带绑定的记录集
第二十九章 MicrosoftDataAccessObjbjects资料库管理
29.1DAO、COM和MicrosoftJet资料库引擎
29.2DAO和VBA
29.3DAO和MFC
29.4利用DAO可以打开什幺样的资料库
29.5按ODBC模式使用DAO――快照和动态集
29.6DAO表类型记录集
29.7DAOQue ryDef和TableDef
29.8DAO多执行绪情况
29.9在滚动视窗中显示资料库的行
29.9.1滚动显示方法
29.9.2一个行-视图类
29.9.3基类和派生类的分工处理
29.9.4CRowView的纯虚成员函式
29.9.5其他的CRowView函式
29.10 动态记录集的编程
29.11EX29A示例程式
29.11.1CEx29aApp
29.11.2CMainFrame和CChildFrame
29.11.3CEx29aDoc
29.11.4CEx29aView
29.11.5CTableSelect
29.11.6CIsamSelect
29.12EX29A资源档案
29.13运行EX29A程式
第六部分 Interne t程式设计
第三十章 TCP/IP、Winsock和WinInet
30.1既针对COM也可以不需要COM
30.2Internet基础
30.2.1网路协定――层
30.2.2Internet协定
30.2.3用户报文协定
30.2.4IP位址格式――网路位元组顺序
30.2.5传输控制协定
30.2.6域名系统
30.2.7HTTP基础
30.2.8FTP基础
30.2.9Internet和Intranet
30.3建立自己的价值$99的Intranet
30.3.1NT档案系统和档案分配表
30.3.2网路硬体
30.3.3对Windows进行网路配置
30.3.4Intranet的主机名――HOSTS档案
30.3.5测试Intranet――Ping程式
30.3.6只有一台计算机的Intranet――TCP/IP环形地址
30.4Winsock
30.4.1同步和异步Winsock编程
30.4.2MFCWinsock类
30.4.3BlockingSocket类
30.4.4一个简化了的HrTP伺服器程式
30.4.5一个简化了的HTTP客户端程式
30.5用CHttpBlockingSocket创建一个Web伺服器程式
30.5.1EX30A伺服器限制
30.5.2Ex30A伺服器结构
30.5.3使用Win32TransmitFile函式
30.5.4编译和测试EX30A
30.5.5使用Telnet
30.6用CHttpBlockingSocket创建一个Web客户端程式
30.6.1EX30AWinsock客户
30.6.2EX30A对代理伺服器的支持
30.6.3测试EX30AWinsock客户
30.7WinInet
30.7.1WinInet相对于Winsock的优势
30.7.2MFCWinInet类
30.7.3Intenet会话状态回调
30.7.4一个简化了的WinInet客户程式
30.8用MFcWinInet类创建一个Web客户
30.8.1Ex30AWinInetClient #1――使用CHttpConnection
30.8.2测试WinInetClient#1
30.8.3EX3 OAWinInetClient #2――使用OpenURL
30.8.4测试WinInetClient#2
30.9异步Moniker档案
30.9.1Moniker
30.9.2MFCCAsyncMonikerFile类
30.9.3在程式中使用CAsyncMonikerFile类
30.9.4 异步moniker档案和WinInet编程
第三十一章 MicrosoftInternetInformationServer编程
31.1IIs的替代产品
31.2MicrosoftIIS
31.2.1安装和控制IIS
31.2.2运行InternetServiceManager
31.2.3IIS的安全性
31.2.4IIS目录
31.2.5IIS日誌记录
31.2.6测试IIS
31.3ISAPI伺服器扩展
31.3.1通用网关接口和ISAPI
31.3.2一个简单的ISSAPI伺服器扩展GET请求
31.3.3HTML窗体――GEt和POST
31.3.4编写ISAPI伺服器扩展DLL
31.3.5MFCISAPI伺服器扩展类
31.4一个实际的ISAPI伺服器扩展――ex31a.dll
31.4.1第一步――获取定单
31.4.2第二步――处理确认窗体
31.4.3编译并测试ex31a.dll
31.4.4调试EX31ADLL
31.5ISAPI资料库访问
31.6使用HTTPCookie来连线事务
31.6.1Cookie如何工作
31.6.2ISAPI伺服器扩展如何处理Cookie
31.6.3使用cookie的一些问题
31.7WWW鉴定
31.7.1基本鉴定
31.7.2WindowsNT问讯/应答鉴定
31.7.3安全套接字层(SSL)
31.8ISAPI过滤器
31.8.1编写ISAPI过滤器DLL
31.8.2MFCISAPI过滤器类
31.9ISAPI过滤器示例――ex3lb.dll、ex3lc.exe
31.9.1选择通知
31.9.2把事务数据传送到显示程式
31.9.3显示程式
31.9.4 编译并测试EX31BISAPI过滤器
第三十二章 ActiveX文档伺服器和Internet
32.1ActiveX文档理论
32.1.1ActiveX文档伺服器和OLE嵌入伺服器
32.1.2从IE3中运行ActiveX文档伺服器
32.1.3ActiveX文档伺服器和ActiveX控制项
32.1.4ActiveX文档伺服器和包容器的OLE接口
32.1.5MFC对ActiveX文档伺服器的支持
32.2ActiveX文档伺服器示例程式EX32A
32.2.1EX32A第一阶段――简单的伺服器
32.2.2调试ActiveX文档伺服器
32.2.3Ex32A第二阶段――加入WinInet调用
32.3ActiveX文档伺服器示例程式EX32B
32.3.1在程式控制下产生POST请求
32.3.2EX32B视图类
32.3.3编译并测试EX32B
32.3.4ActiveX文档伺服器和VBScript
32.4进一步使用ActiveX文档伺服器
附录A Microsoft基本类(MFc)库中的讯息映射函式
附录B MFC库运行时类识型和动态对象创建
前言
第一部分 Windows、VisualC++和应用程式框架基础
第一章 MicrosoftWindows 和VisualC++
1.1Windows的编程模式
1.1.1讯息处理
1.1.2Windows的图形设备接口(GDI)
1.1.3基于资源的程式设计
1.1.4记忆体管理
1.1.5动态连线库(DLL)
1.1.6Win32应用程式编程接口
1.2VisualC++的组成
1.2.1MicrosoftDeveloperStudio97和创建过程
1.2.2资源编辑器――WorkspaceResourceView
1.2.3C/C++编译器
1.2.4资源编译器
1.2.5连线器
1.2.6调试器
1.2.7AppWizard
1.2.8ClassWizard
1.2.9源程式浏览器
1.2.10在线上帮助
1.2.11Windows诊断工具
1.2.12原始码控制
1.2.13Gallery
1.2.14Microsoft基本类库4.21版
1.2.15MicrosoftActiveX 模板库
第二章 Microsoft基本类库应用程式框架
2.1为什幺要使用应用程式框架
2.1.1学习曲线
2.2什幺是应用程式框架
2.2.1应用程式框架和MFC库
2.2.2应用程式框架示例
2.3MFC库讯息映射
2.3.1文档和视图
第二部分 MFC 库中的视图类
第三章 从“Hello,world!”着手学习AppWizard
3.1什幺是视图
3.2单文档界面(SDI)和多文档界面(MDI)
3.3“不做任何事情”的应用程式
3.4CEx03aView视图类
3.5在视窗内绘图――Windows的图形设备接口
3.5.1OnDraw成员函式
3.5.2Windows设备环境
3.5.3往EX03A程式中加入绘製代码
3.6资源编辑器简介
3.6.1ex03a.rc的内容
3.6.2运行对话框资源编辑器
3.7Win32Debug目标和Win32Release目标
3.8允许诊断宏
3.9对预编译头档案的理解
3.10两种方法运行程式
第四章 基本事件处理、映射模式和滚动视图
4.1获取用户输入――讯息映射函式
4.1.1讯息映射
4.1.2保存视图的状态-类数据成员
4.1.3初始化视图类数据成员
4.1.4使矩形区域无效
4.1.5Windows 的客户区域
4.1.6CRect,CPoint和CSize类的运算
4.1.7一个点是否在矩形内
4.1.8CRect的LPRECT操作符
4.1.9一个点是否在椭圆内
4.2Ex04A示例程式
4.3对EX04A使用ClassWizard
4.3.1同时使用AppWizard 和Clas sWizard
4.4映射模式
4.4.1MM_TEXT映射模式
4.4.2“固定比例”映射模式
4.4.3“可变比例”映射模式
4.4.4坐标变换
4.4.5EX04B示例程式――转换到MM_HIMETRIC映射模式
4.5滚动视窗
4.5.1视窗比人们所见到的要大
4.5.2滚动条
4.5.3滚动方式的选择
4.5.4 OnInitialUpdate函式
4.5.5接收键盘输入
4.5.6EX04C滚动示例程式
4.6其他Windows讯息
4.6.1WM_CREATE讯息
4.6.2WM_CLOSE讯息
4.6.3WM_QUERYENDSESSION讯息
4.6.4WM_DESTROY讯息
4.6.5WM_NCDESTROY讯息
第五章 图形设备接口(GDI)、颜色及字型
5.1设备环境类
5.1.1显示设备环境类CClientDC和CWindowDC
5.1.2构造和析构CDC对象
5.1.3设备环境的状态
5.1.4CPaintDC类
5.2GDI对象
5.2.1GDI对象的构造与析构
5.2.2跟蹤GDI对象
5.2.3库存的GDI对象
5.2.4GDI选择的有效期
5.3Windows的颜色映射
5.3.1标準视频图形阵列(V以)显示卡
5.3.2256色显示卡
5.3.316位颜色显示卡
5.3.424位颜色显示卡
5.4字型
5.4.1字型是GDI对象
5.4.2选择字型
5.4.3列印字型
5.4.4 显示字型
5.4.5显示器的逻辑英寸和物理英寸
5.4.6计算字元高度
5.5EXO5A示例程式
5.5.1EX05A程式的组成元素
5.6EX05B程式
5.6.1EX0 5B程式的组成元素
5.7EX05C示例程式――再次使用CScrollView
5.7.1EX0 5C程式的组成元素
5.7.2CScrollView的SetScaleToFitSize模式
5.7.3在滚动视图中使用逻辑twips映射模式
第六章 模式对话框和Windows通用控制项
6.1模式和无模式对话框
6.2资源和控制项
6.3模式对话框的编程
6.4包罗万象的对话框――EX06A示例程式
6.4.1创建对话框资源
6.4.2ClassWizard和对话框类
6.4.3将对话框与视图相连线
6.4.4深入理解EX06A应用程式
6.5对话框程式的改进
6.5.1获得OnOK退出控制
6.5.2OnCancel处理
6.5.3和滚动条控制项挂上钩
6.6控制项的标识:CWnd指针和控制项ID
6.7设定对话框的背景色和其中控制项的颜色
6.8在对话框视窗内绘图
6.9在运行时加入对话框控制项
6.10利用其他的控制项特性
6.11Windows通用控制项
6.11.1进度指示器控制项
6.11.2滑桿条(Trackbar)控制项
6.11.3微调按钮控制项
6.11.4列表控制项
6.11.5树状控制项
6.11.6WM NOTIFY讯息
6.12EX06B示例程式
6.13其他Windows 通用控制项
第七章 无模式对话框和Windows通用对话框类
7.1无模式对话框
7.1.1创建无模式对话框
7.1.2用户定义的讯息
7.1.3对话框的归属
7.1.4无模式对话框的例子――EX07A
7.2CFormView类――另外一种可供选择的无模式对话框
7.3Windows通用对话框
7.3.1直接使用CFileDialog类
7.3.2从通用对话框类进行派生
7.3.3嵌套对话框
7.3.4使用CFileDialog的一个例子――EX07B
7.3.5CFileDialog的其他可定製特性
第八章 使用ActiveX控制项
8.1ActiveX控制项和普通的Windows控制项
8.1.1普通的Windows 控制项――参考体系
8.1.2ActiveX控制项与普通控制项的相同点
8.1.3ActiveX控制项与普通控制项的不同点――属性和方法
8.2安装ActiveX控制项
8.3日曆控制项
8.4ActiveX控制项包容器编程
8.4.1属性访问
8.4.2ClassWizard为ActiveX控制项产生的C++类
8.4.3AppWizard对ActiveX控制项的支持
8.4.4ClassWizard和包容器对话框
8.4.5对话框类数据成员和控制项类的用法
8.4.6映射ActiveX控制项事件
8.4.7把ActiveX控制项锁定在记忆体里
8.5EX08A示例程式――ActiveX控制项对话框包容器
8.6ActiveX控制项在HTML档案中的使用
8.7在运行时创建ActiveX控制项
8.8EX08B示例程式――Web浏览器ActiveX控制项
8.9EX08C示例程式――一个完整的双视窗浏览器
8.10图形属性
8.11约束属性――改变通知
8.12其他的ActiveX控制项
第九章 Win32记忆体管理
9.1进程和记忆体空间
9.1.1Windows95进程地址空间
9.1.2WindowsNT进程地址空间
9.2虚拟记忆体如何工作
9.3VirtualAlloc函式――占用和保留记忆体
9.4Windows 堆和GlobalAlloc 函式族
9.5小记忆体堆,C++的new和delete操作符,_heapmin
9.6记忆体映射档案
9.7访问资源
9.8管理动态记忆体的一些提示
9.9常量数据的最佳化存储
第十章 点阵图
10.1GDI点阵图和与设备无关的点阵图
10.2彩色点阵图和单色点阵图
10.3使用GDI点阵图
10.3.1从资源中装人GDI点阵图
10.3.2显示映射模式的作用
10.3.3对位进行伸缩处理
10.3.4EX10A示例程式
10.4利用点阵图改进萤幕显示
10.4.1EX10B示例程式
10.4.2Windows动画
10.5DIB和CDib类
10.5.1关于调色板编程的术语
10.5.2DIB、象素和颜色表
10.5.3BMP档案中DIB的结构
10.5.4DIB访问函式
10.5.5CDib类
10.5.6DIB显示性能
10.5.7EX10C示例程式
10.6进一步使用DIB
10.6.1Load Image函式
10.6.2DrawDibDraw函式
10.7在按钮上设定点阵图
10.7.1EX10D示例程式
10.7.2进一步使用点阵图按钮
第十一章 Wind0ws讯息处理和多执行绪编程
11.1Windows讯息处理
11.1.1单执行绪程式处理讯息的过程
11.1.2交出控制
11.1.3计时器
11.1.4EX11A示例程式
11.2空状态处理
11.3多执行绪编程
11.3.1编写辅助执行绪函式和启动执行绪
11.3.2主执行绪如何和辅助执行绪通话
11.3.3辅助执行绪如何和主执行绪通话
11.3.4EX11B示例程式
11.3.5用事件使执行绪同步
11.3.6EX11C示例程式
11.3.7执行绪阻塞
11.3.8排斥区
11.3.9互斥体(mutex)和信号
11.3.10用户界面执行绪(UI执行绪)
第三部分 文档-视图结构
第十二章 选单、键盘加速键、复文本编辑控制项和属性表
12.1主框架视窗和文档类
12.2Windows的选单
12.3键盘加速键
12.4命令处理
12.4.1派生类中的命令讯息控制
12.4.2更新命令用户界面讯息控制函式
12.4.3对话框传送的命令
12.5应用程式框架的内含选单项
12.6选单项的允许/禁用
12.7MFC文本编辑选择
12.7.1CE出tView类
12.7.2CRichEditView类
12.7.3CRichEditCtrl类
12.8ex12A示例程式
12.9属性表
12.9.1创建属性表
12.9.2属性表数据交换
12.10改进EX12A示例程式
12.11Apply按钮的处理过程
12.12CMenu类
12.13创建浮动的弹出式选单
12.14扩展命令处理
第十三章 工具列和状态栏
13.1控制栏和应用程式框架
13.2工具列
13.2.1工具列点阵图
13.2.2按钮的状态
13.2.3工具列和命令讯息
13.2.4工具列更新命令UI讯息控制函式
13.3工具提示
13.4寻找主框架视窗
13.5EX13A工具列示例程式
13.6状态栏
13.6.1状态栏的定义
13.6.2信息行
13.6.3状态指示器
13.6.4获得对状态栏的控制
13.7EX13B状态栏示例程式
第十四章 可重用框架视窗基类
14.1为什幺可重用基类难以设计
14.2CPersistentFrame类
14.3CFrameWnd类和ActivateFrame成员函式
14.4PreCreateWindow成员函式
14.5Windows注册表
14.6使用CString类
14.7最大化视窗的位置
14.8控制栏状态和注册表
14.9静态数据成员
14.10默认视窗矩形
14.11EX14A示例程式
14.12MDI应用程式中的持续框架
第十五章 文档与视图的分离
15.1文档-视图之间的相互作用函式
15.1.1CView∷GetDocument函式
15.1.2CDocumeat∷UpdateAllViews 函式
15.1.3CView∷OnUpdate函式
15.1.4CView∷OnInitialUpdate函式
15.1.5CDocument∷OnNewDocument函式
15.2最简单的文档-视图应用程式
15.3CFormViiew类
15.4CObject类
15.5诊断信息转储
15.5.1TRACE宏
15.5.2atxDump对象
15.5.3信息转储环境及CObjct类
15.5.4未被删除对象的自动信息转储
15.6EX15A示例程式
15.7更加高级的文档-视图之间的相互作用
15.8CDocument∷DeleteContents函式
15.9CObList集合类
15.9.1对先人先出列表使用CObList类
15.9.2在COblIst中进行叠代――POSITION变数
15.9.3CTypedPtrList模板集合类
15.9.4信息转储环境及集合类
15.10 EX15B示例程式
15.10.1资源要求
15.10.2代码要求
15.10.3CStudentDoc
15.10.4CStudentView
15.10.5测试EX15B应用程式
15.11留给读者的两个练习
第十六章 读和写文档――SDI应用程式
16.1什幺是序列化
16.1.1磁碟档案和归档(Archives)
16.1.2使类可序列化
16.1.3编写Serialize函式
16.1.4 从归档中载人――内嵌对象和指针
16.1.5使集合序列化
16.1.6Serialize函式和应用程式框架
16.2SDI应用程式
16.2.1Windows应用程式对象
16.2.2文档模板类
16.2.3文档模板资源
16.2.4SDI文档的多视图
16.2.5创建空文档――CWinApp∷OnFileNew函式
16.2.6文档类的OnNewDocument函式
16.2.7连线FileOpe n与序列化代码――OnFileOpen函式
16.2.8文档类的DeleteContents函式
16.2.9将FileSave和FileSaveAs与序列化代码相连线
16.2.10 文档的“髒”标誌
16.3EX16A――序列化SDI示例程式
16.3.1CStudent
16.3.2CEx16aApp
16.3.3CFrameWnd
16.3.4CStudentDoc
16.3.5cStudentView
16.3.6测试EX16A应用程式
16.4从Explorer启动及拖放
16.4.1程式注册
16.4.2在文档上双击滑鼠
16.4.3允许拖放
16.4.4程式启动参数
16.4.5试验用Explorer启动程式及拖放功能
第十七章 读和写文档――MDI应用程式
17.1MDI应用程式
17.1.1一个典型的具有MFC库风格的MDI应用程式
17.1.2MDI应用程式对象
17.1.3MDI文档模板类
17.1.4MDI框架视窗和MDI子视窗
17.1.5主框架和文档模板资源
17.1.6创建空文档――CWinApp OnFileNew函式
17.1.7为现有文档创建新的视图
17.1.8载人和存储文档
17.1.9多文档模板
17.1.10Explorer启动及拖放
17.2EX17A示例程式
17.2.1CEx17aApp
17.2.2CMainFrame
17.2.3CChildFrame
17.2.4 测试EX17A应用程式
第十八章 列印和列印预览
18.1Windows的列印
18.1.1标準列印对话框
18.1.2互动选择列印页码
18.1.3显示页和列印页
18.2列印预览
18.3有关印表机的程式设计
18.3.1印表机设备环境和CViewOnDraw函式
18.3.2CView OnPrint函式
18.3.3準备设备环境――CView OnPrePareDC函式
18.3.4列印任务的开始和结束
18.4EX18A示例程式――一个所见即所得的列印程式
18.5读取印表机矩形框
18.6再看模板集合类――CArray类
18.7EX18B示例程式――多页列印程式
第十九章 切分视窗和多视图
19.1切分视窗
19.2多视图选择
19.3动态和静态切分视窗
19.4EX19A示例程式――具有单个视图类的SDI动态切分
19.4.1与切分有关的资源
19.4.2CMainFrame
19.4.3测试EX19A应用程式
19.5EX19B示例程式――双视图类SDI静态切分
19.5.1CHexView
19.5.2CMainFrame
19.5.3测试EX19B应用程式
19.6EX19C示例程式――切换没有切分的视图类
19.6.1资源要求
19.6.2CMainFrame
19.6.3测试Ex19C应用程式
19.7Ex19D示例程式――多视图类MDI应用程式
19.7.1资源要求
19.7.2CEx19dApp
19.7.3CMainFrame
19.7.4测试EX19D应用程式
第二十章 上下文相关帮助
20.1Windows 的WinHe lp程式
20.1.1复文本格式(RTF)
20.1.2编写简单的帮助档案
20.1.3改进的TableOfContents
20.2应用程式框架与WinHelp
20.2.1调用WinHelp
20.2.2使用搜寻字元串
20.2.3从应用程式的选单调用WinHelp
20.2.4帮助上下文别名
20.2.5确定帮助上下文
20.2.6F1帮助
20.2.7Shift-F1帮助
20.2.8讯息框帮助――AfxMessageBox 函式
20.2.9一般的帮助
20.3帮助示例――不需要任何编程
20.4MAKEHEL处理
20.5帮助命令处理
20.5.1F1处理过程
2.5.2Shift-F1处理过程
20.6帮助命令处理示例程式――EX20 B
20.6.1头档案要求
20.6.2CStringView
20.6.3CHexView
20.6.4资源要求
20.6.5帮助档案要求
20.6.6测试EX20B应用程式
第二十一章 动态连线库
21.1基本DLL理论
21.1.1导人如何与导出相匹配
21.1.2隐式连线和显式连线
21.1.3符号连线和序号连线
21.1.4DLL人口点――DllMain
21.1.5实例句柄――装载资源
21.1.6客户程式如何找到DLL
21.1.7调试DLL
21.2MFcDLL――扩展的和正规的
21.2.1共享的MFCDLL和WindowsDLL
21.2.2MFC扩展DLL――导出类
21.2.3MFC扩展DLL资源搜寻的顺序
21.2.4EX21A示例程式――MFC扩展DLL
21.2.5EX21B示例程式――DLL测试客户程式
21.2.6MFC正规DLL――CWinApp派生类
21.2.7使用AFX_MANAGE_STATE宏
21.2.8MFC正规DLL资源搜寻顺序
21.2.9EX21C示例程式――MFC正规DLL
21.2.10修改EX21B示例程式――加入代码以测试ex21c.dll
21.3自定义控制项DLL
21.3.1什幺是自定义控制项
21.3.2自定义控制项的视窗类
21.3.3MFC库和WndProc函式
21.3.4自定义控制项通知讯息
21.3.5传送给控制项的用户定义讯息
21.3.6EX2 1D示例程式――自定义控制项
21.3.7再修改EX2 1B示例程式――加入代码以测试ex21d.dll
第二十二章 不带文档或视图类的MFC程式
22.1EX22A示例程式――一个基于对话框的应用程式
22.1.1应用程式类InitInstance函式
22.1.2对话框类和程式图示
22.2EX22B示例――一个SDI应用程式
22.2.1应用程式类InitInstance函式
22.2.2CMainFrame类
22.3EX22C示例程式――一个MDI应用程式
22.3.1套用类程式InitInstance函式
22.3.2CMainFrame类
22.3.3CChildFrame类
22.3.4资源要求
22.4定製(Custom)AppWizard
第四部分 ActiveX:组件对象模型、自动化和OLE
第二十三章 组件对象模型
23.1ActiveX技术背景
23.2组件对象模型(COM)
23.2.1COM所解决的问题
23.2.2COM的本质
23.2.3什幺是COM接口
23.2.4IUnknown接口和QueryInterface成员函式
23.2.5引用计数:AddRdf和Release函式
23.2.6类厂(classfactory)
23.2.7CCmdTarget类
23.2.8EX23A示例程式――一个模拟的COM
23.3MFC库中实际的COM
23.3.1COM的CoGetClassObject函式
23.3.2COM和Windows注册表
23.3.3运行时对象注册
23.3.4COM客户程式如何调用进程内组件
23.3.5COM客户程式如何调用进程外组件
23.3.6MFC接口宏
23.3.7MFC的COleObjectFactory类
23.3.8AppWizard/ClassWizard对COM进程内组件的支持
23.3.9MFCCOM客户程式
23.3.10EX23B示例程式――MFCCOM进程内组件
23.3.11EX23C示例程式――MFCCOM客户
23.4包容、集合和继承
第二十四章 自动化
24.1C++与VisualBasicforApplications(VBA)之间的连线
24.2自动化客户和自动化组件
24.3MicrosoftExcel――一种比VisualBasic还好的VisualBasic
24.4属性(property)、方法(method)和集合
24.5自动化所解决的问题
24.6IDispatch接口
24.7自动化程式设计的选择
24.8MFCIDispatch的实现
24.9一个MFC自动化组件
24.10一个MFC自动化客户程式
24.11使用编译器#import指令的自动化客户程式
24.12VARIANT类型
24.13COleVariant类
24.14Invoke的参数和返回值的类型转换
24.15自动化示例
24.15.1EX24A自动化组件EXE示例――不带任何用户界面
24.15.2EX24B自动化组件DLL示例程式
24.15.3EX24CSDI自动化组件EXE示例――带用户界面
24.15.4EX24D自动化客户示例程式
24.15.5EX24E自动化客户示例程式
24.16VBA早绑定
24.16.1注册类型库
24.16.2组件如何注册自己的类型库
24.16.3ODL档案
24.16.4Excel如何使用类型库
24.16.5为什幺使用早绑定
24.16.6客户-组件的快速连线
第二十五章 统一数据传输――剪贴簿传输以及OL拖放
25.1IDataO bject接口
25.2IDataObject如何增强标準剪贴簿的支持
25.3FORMATETC和STGMEDIUM结构
25.3.1FORMATETC
25.3.2STGMEDTUM
25.3.3IDataObject接口成员函式
25.4MFC统一数据传输支持
25.4.1COleDataSource类
25.4.2COleDataObject类
25.4.3MFC数据对象剪贴簿传输
25.5MFCCRectTracker类
25.5.1CRectTracker类成员函式
25.5.2CRectTracker类矩形坐标转换
25.6EX25A示例程式――数据对象剪贴簿
25.6.1CMainFrame类
25.6.2CE25aDoc类
25.6.3CEx25aView类
25.7MFC拖放
25.7.1传输的源方
25.7.2传输的目标方
25.7.3拖放的顺序
25.8EX25B示例程式――OLE拖放
25.8.1CEx25bDoc类
25.8.2CEx25bView类
25.9Windows应用程式和拖放――Dobjview
第二十六章 结构化存储
26.1複合档案
26.2存储(Storage)和IStorage接口
26.2.1获取IStorage指针
26.2.2释放STATSTG记忆体
26.2.3对存储对象的元素进行枚举
26.2.4进程间共享存储
26.3流(Stream)和IStream接口
26.3.1IStream接口成员函式
26.3.2IStream编程
26.4ILockBytes接口
26.5EX26A示例程式――结构化存储
26.5.1选单
26.5.2CEx26aView类
26.5.3辅助执行绪
26.6结构化存储和持久COM对象
26.6.1IPersistStorage 接口
26.6.2IPersistStream接口
26.6.3IpersistStream编程
26.7EX2 6B示例程式――一个持久DLL组件
26.8EX26C示例程式――一个持久存储客户程式
26.9複合档案碎片的处理
26.10複合档案的其他优点
第二十七章 OLE嵌入组件和包容器
27.1嵌入和实地激活(可视编辑)
27.2最小伺服器和完备伺服器(组件)――连结
27.3可视编辑前景暗淡的一面
27.4Windows 图元档案和内嵌对象
27.5组件程式的MFCOLE结构
27.6EX27A示例程式――MFC实地激活最小伺服器
27.6.1MDI嵌入组件
27.6.2实地组件调整大小的思路
27.7包容器-组件相互作用
27.7.1使用组件的IOleObject接口
27.7.2装人和保存组件自身的数据――组件文档
27.7.3剪贴簿数据传输
27.7.4获得组件的图元档案
27.7.5进程内控制器的角色
27.8组件状态
27.8.1包容器接口
27.8.2通报连线
27.8.3剪贴簿图元档案
27.9接口简要说明
27.9.1IOleObject接口
27.9.2IViewObject2接口
27.9.3IOleClientSite接口
27.9.4IAdviseSink接口
27.10OLE辅助函式
27.11OLE嵌入包容器应用程式
27.11.1MFC对OLE包容器的支持
27.11.2一些包容器限制
27.11.3包容器特性
27.12EX27B示例程式――嵌入包容器
27.12.1CEx27bView类
27.12.2CEx27bDoc类
27.13 EX27C示例程式――OLE嵌入组件
27.13.1CEx27cView类
27.13.2CEx27cDoc类
第五部分 资料库管理
第二十八章 MicrosoftODBC资料库管理
28.1资料库管理的优势
28.2结构化查询语言
28.3ODBC标準
28.3.1ODBC结构
28.3.2ODBCDK编程
28.4MFCODBC类――CRecordset和CDatabase
28.4.1记录集中关于行的计数
28.4.2处理odbc异常
28.5学生注册资料库
28.6EX28A记录集示例程式
28.7Ex28A示例程式中的元素
28.7.1记录集类与应用程式之间的连线
28.7.2CEx28aView类的OnInitialUpdate成员函式
28.7.3CEx28aView类的OnDraw成员函式
28.8筛选器和排序字元串
28.9连线两个资料库表
28.10MFCCRecordView类
28.11EX28B记录查看示例程式
28.12多记录集
28.12.1EX28C多记录集示例程式
28.12.2参数化查询
28.13ODBC多执行绪
28.14大批行数据获取(bulkrow fetch)
28.15使用不带绑定的记录集
第二十九章 MicrosoftDataAccessObjbjects资料库管理
29.1DAO、COM和MicrosoftJet资料库引擎
29.2DAO和VBA
29.3DAO和MFC
29.4利用DAO可以打开什幺样的资料库
29.5按ODBC模式使用DAO――快照和动态集
29.6DAO表类型记录集
29.7DAOQue ryDef和TableDef
29.8DAO多执行绪情况
29.9在滚动视窗中显示资料库的行
29.9.1滚动显示方法
29.9.2一个行-视图类
29.9.3基类和派生类的分工处理
29.9.4CRowView的纯虚成员函式
29.9.5其他的CRowView函式
29.10 动态记录集的编程
29.11EX29A示例程式
29.11.1CEx29aApp
29.11.2CMainFrame和CChildFrame
29.11.3CEx29aDoc
29.11.4CEx29aView
29.11.5CTableSelect
29.11.6CIsamSelect
29.12EX29A资源档案
29.13运行EX29A程式
第六部分 Interne t程式设计
第三十章 TCP/IP、Winsock和WinInet
30.1既针对COM也可以不需要COM
30.2Internet基础
30.2.1网路协定――层
30.2.2Internet协定
30.2.3用户报文协定
30.2.4IP位址格式――网路位元组顺序
30.2.5传输控制协定
30.2.6域名系统
30.2.7HTTP基础
30.2.8FTP基础
30.2.9Internet和Intranet
30.3建立自己的价值$99的Intranet
30.3.1NT档案系统和档案分配表
30.3.2网路硬体
30.3.3对Windows进行网路配置
30.3.4Intranet的主机名――HOSTS档案
30.3.5测试Intranet――Ping程式
30.3.6只有一台计算机的Intranet――TCP/IP环形地址
30.4Winsock
30.4.1同步和异步Winsock编程
30.4.2MFCWinsock类
30.4.3BlockingSocket类
30.4.4一个简化了的HrTP伺服器程式
30.4.5一个简化了的HTTP客户端程式
30.5用CHttpBlockingSocket创建一个Web伺服器程式
30.5.1EX30A伺服器限制
30.5.2Ex30A伺服器结构
30.5.3使用Win32TransmitFile函式
30.5.4编译和测试EX30A
30.5.5使用Telnet
30.6用CHttpBlockingSocket创建一个Web客户端程式
30.6.1EX30AWinsock客户
30.6.2EX30A对代理伺服器的支持
30.6.3测试EX30AWinsock客户
30.7WinInet
30.7.1WinInet相对于Winsock的优势
30.7.2MFCWinInet类
30.7.3Intenet会话状态回调
30.7.4一个简化了的WinInet客户程式
30.8用MFcWinInet类创建一个Web客户
30.8.1Ex30AWinInetClient #1――使用CHttpConnection
30.8.2测试WinInetClient#1
30.8.3EX3 OAWinInetClient #2――使用OpenURL
30.8.4测试WinInetClient#2
30.9异步Moniker档案
30.9.1Moniker
30.9.2MFCCAsyncMonikerFile类
30.9.3在程式中使用CAsyncMonikerFile类
30.9.4 异步moniker档案和WinInet编程
第三十一章 MicrosoftInternetInformationServer编程
31.1IIs的替代产品
31.2MicrosoftIIS
31.2.1安装和控制IIS
31.2.2运行InternetServiceManager
31.2.3IIS的安全性
31.2.4IIS目录
31.2.5IIS日誌记录
31.2.6测试IIS
31.3ISAPI伺服器扩展
31.3.1通用网关接口和ISAPI
31.3.2一个简单的ISSAPI伺服器扩展GET请求
31.3.3HTML窗体――GEt和POST
31.3.4编写ISAPI伺服器扩展DLL
31.3.5MFCISAPI伺服器扩展类
31.4一个实际的ISAPI伺服器扩展――ex31a.dll
31.4.1第一步――获取定单
31.4.2第二步――处理确认窗体
31.4.3编译并测试ex31a.dll
31.4.4调试EX31ADLL
31.5ISAPI资料库访问
31.6使用HTTPCookie来连线事务
31.6.1Cookie如何工作
31.6.2ISAPI伺服器扩展如何处理Cookie
31.6.3使用cookie的一些问题
31.7WWW鉴定
31.7.1基本鉴定
31.7.2WindowsNT问讯/应答鉴定
31.7.3安全套接字层(SSL)
31.8ISAPI过滤器
31.8.1编写ISAPI过滤器DLL
31.8.2MFCISAPI过滤器类
31.9ISAPI过滤器示例――ex3lb.dll、ex3lc.exe
31.9.1选择通知
31.9.2把事务数据传送到显示程式
31.9.3显示程式
31.9.4 编译并测试EX31BISAPI过滤器
第三十二章 ActiveX文档伺服器和Internet
32.1ActiveX文档理论
32.1.1ActiveX文档伺服器和OLE嵌入伺服器
32.1.2从IE3中运行ActiveX文档伺服器
32.1.3ActiveX文档伺服器和ActiveX控制项
32.1.4ActiveX文档伺服器和包容器的OLE接口
32.1.5MFC对ActiveX文档伺服器的支持
32.2ActiveX文档伺服器示例程式EX32A
32.2.1EX32A第一阶段――简单的伺服器
32.2.2调试ActiveX文档伺服器
32.2.3Ex32A第二阶段――加入WinInet调用
32.3ActiveX文档伺服器示例程式EX32B
32.3.1在程式控制下产生POST请求
32.3.2EX32B视图类
32.3.3编译并测试EX32B
32.3.4ActiveX文档伺服器和VBScript
32.4进一步使用ActiveX文档伺服器
附录A Microsoft基本类(MFc)库中的讯息映射函式
附录B MFC库运行时类识型和动态对象创建