第一章 COM简介
1.1 什么是COM?
1.2 COM是怎样产生的?
1.3 为什么需要COM?
1.4 COM工作机制
1.4.1 COM服务器
1.4.2 COM ClassFactory
1.4.3 COM接口
1.4.4 COM参考计数
1.4.5 Windows的COM系统
1.4.6 COM客户
1.5 静态COM,动态Automation
1.6 Automation使COM向计算机界开放
1.7 从Automation到OCX、ActiveX
1.8 ActiveX控件是带用户接口的Automation服务器
1.9 Stock属性和使ActiveX控件行为标准化的属性页
1.10 连接点允许事件从ActiveX控件发送到容器
1.11 Persistence允许ActiveX控件随时存贮它们的状态
1.12 下一步工作
第二章 ATL简介
2.1 Visual C++中的ATL
2.2.1 老版本Visual C++的ATL
2.1.2 ATL的在线文档
2.2 用ATL AppWizard生成ATL项目
2.2.1 New对话框
2.2.2 ATL AppWizard
2.2.3 确认对话框
2.3 应用ATL对象向导添加COM接口
2.3.1 对象向导对象
2.3.2 对象向导控件
2.3.3 对象向导Miscellaneous元素
2.3.4 对象向导Data Access元素
2.3.5 对象向导名标签(Object Wizard Name Tab)
2.3.6 对象向导属性标签(Object Wizard Attributes Tab)
2.3.7 其它对象向导标签
2.4 使用ATL Interface Wizards生成函数和属性
2.4.1 ClassView Shortcut Menu
2.4.2 添加方法对话框(Add Method Dialog)
2.4.3 添加属性对话框(Add ProPerty Dialog)
2.4.4 编辑属性对话框(Edit Attributes Dialog)
2.5 ATL项目的优先主题
2.5.1 代理生成器
2.5.2 高级服务器
2.5.3 OLE DB Providers
2.6 ATL代码(模板和宏)
2.6.1 模板用标准C++代码生成常见类
2.6.2 宏展开为常用代码
2.7 ATL 3.0版本的新变化
2.7.1 3.0版本对AppWizard的改变
2.7.2 3.0版本对ATL ObjectWiard的改变
2.7.3 3.0版本对ClassView Context Menus的改变
2.7.4 增加窗口消息手柄选项
2.7.5 实施连接点选项(Implement Connection Point)
2.7.6 执行接口选项(Implement Interface)
2.8 下一步的工作
第三章 创建COM服务器
3.1 为什么要编写COM服务器?
3.1.1 COM服务器与DLL的对比
3.1.2 如今COM服务器无处不在
3.2 COM服务器如何工作
3.2.1 服务器本身
3.2.2 接口和它的函数
3.2.3 ClassFactory
3.2.4 参数而非属性
3.2.5 GUIDs和HRESULT
3.3 服务器内部的服务器
3.3.1 接口继承问题
3.3.2 包含是简单的方法
3.3.3 复杂但高效的集合
3.3.4 ATL对包含和集合都提供支持
3.5 ATL服务器类型
3.5.1 DLL服务器
3.5.2 EXE服务器
3.6 ATL对象类型
3.6.1 简单对象
3.6.2 IE(Internet Explorer)对象
3.6.3 特殊对象
3.7 创建可集合简单COM服务器EXE
3.7.1 按步解释
3.7.2 按行说明
3.8 创建一个非集合简单COM服务器EXE
3.8.1 按步解释
3.8.2 按行说明
3.9 创建一个包含IE(Internet Explorer)的COM服务器
3.9.1 按步解释
3.9.2 按行说明
3.10 创建一个集合IE COM服务器
3.10.1 按步解释
3.10.2 按行说明
3.11 下一步的工作
第四章 建立COM客户
4.1 COM系统
4.1.1 CoInitialize
4.1.2 CoCreateinstance
4.1.3 CoUninitialize
4.2 C++COM客户
4.2.1 启动和停止COM系统
4.2.2 用头文件使用接口指针
4.2.3 用智能指针使用接口指针
4.3 非C++COM客户
4.3.1 像接口指针一样生成COM服务器对象
4.3.2 接口函数调用
4.3.3 错误处理
4.4 ATL COM客户
4.4.1 把EXE服务器变成EXE客户
4.4.2 修改tWinMain
4.4.3 在ATL项目中使用对话框
4.5 FrontPage Express COM客户
4.5.1 FrontPage Express随IE4.0免费提供
4.5.2 把FPE的ActiveX Wizard用于COM服务器
4.5.3 用FPE编写VBScirpt代码
4.6 在ATL中用智能指针创建COM客户
4.6.1 按步解释
4.6.2 按行说明
4.6.3 按步解释
4.7 用FPE在HTML中建立一个COM客户
4.7.1 按行说明
4.7.2 按步解释
4.8 下步工作
第五章 开发Automation服务器
5.1 Automation做些什么
5.1.1 C++专有的COM俱乐部
5.1.2 对接口的早捆绑与晚捆绑的比较
5.1.3 现在每一个人都可以使用动态函数
5.2 Automation是如何工作的?
5.2.1 Dispinterfaces和Interfaces的比较
5.2.2 双接口具备两者的优点
5.2.3 IDispatch是Automation的核心
s.2.4 GetlDsOfNames容许晚捆绑
5.2.5 Invoke使Automation发生
5.3 属性为Automation服务器提供数据储存
5.3.1 属性和方法与函数的比较
5.3.2 用户提供储存器Automation提供方法
5.3.3 Automation数据类型
5.3.4 与类型库同时连接
5.4 ATL通过缺省值建立Automation服务器
5.4.1 双接口是缺省设置
5.4.2 手工建立Dispinterfaces
5.4.3 ATL自动建立TLB文件
5.5 Automation客户需要ATL代理生成器
5.5.1 智能指针需要帮助
5.5.2 ATL代理生成器与问题的解决
5.6 在ATL中建立一个Dispinterface Automation服务器
5.6.1 按步解释
5.6.2 按行说明
5.7 在ATL中建立一个双接口Automation服务器
5.7.1 按步解释
5.7.2 按行说明
5.8 用智能指针建立Automation客户
5.8.1 按步解释
5.8.2 ATL 3.0不再支持代理生成器
5.8.3 按行说明
5.9 在ATL中用静态调用建立Automation客户
5.9.1 按步解释
5.9.2 按行说明
5.9.3 按步解释
5.10 用FPE在HTML中建立一个Automation客户
5.10.1 按行说明
5.10.2 按步解释
5.11 下一步工作
第六章 创建Internet Explorer ActiveX控件
6.1 ActiveX控件为Automation服务器提供用户接口
6.1.1 复合文件是COM用户接口
6.1.2 VBX控件疾风暴雨似地占领了市场
6.1.3 OCX控件通过Java变成了ActiveX控件
6.2 ATL支持轻量级的IE ActiveX控件对象
6.2.1 IE控件与Full控件的比较
6.2.2 确实只有你的浏览器知道
6.3 ActiveX控件在ATL中有许多选项
6.3.1 透明和实心控件描绘形式
6.3.2 运行时的不可见性
6.3.3 Input Focus处理选项
6.3.4 WINDOWS控件子类选项
6.3.5 绘图优化
6.3.6 OLE支持
6.3.7 Windowless与Windowed的比较
6.4 用ATL建立一个加密和解密IE/Lite控件
6.4.1 按步解释
6.4.2 按行说明
6.5 用ATL建立一个透明的IE控件标签
6.5.1 按步解释
6.5.2 按行说明
6.6 用ATL建立Edit IE控件
6.6.1 按步解释
6.7 用ATL3建立一个Lite Composite控件
6.7.1 按步解释
6.7.2 按行说明
6.8 在HTML中用ActiveX控件台建立ActiveX控件客户
6.8.1 按步解释
6.9 下一步的工作
第六章 创建Full ActiveX控件
7.1 全控件具有但IE控件不具有的属性
7.1.1 快速激活
7.1.2 嵌入对象和类型信息
7.1.3 持久胜
7.1.4 属性页
7.2 ActiveX控件支持固化的和外部的属性和方法
7.2.1 ActiveX控件需要一致性的外观和感觉
7.2.2 固化属性使ActiveX控件的属性和方法标准化
7.2.3 外部属性使ActiveX控件更加适用
7.3 利用持久性保存ActiveX控件的状态
7.3.1 状态信息需要以统一的方式保存
7.3.2 复合文档技术过于复杂
7.3.3 持久性是ActiveX寻找的答案
7.4 基于存储的持久性
7.4.1 “存储仓”类似于文件夹
7.4.2 “流”类似于文件
7.5 基于属性包的持久性
7.5.1 属性包由容器执行
7.5.2 属性色形式自由
7.6 WORD使用基于存储的持久性
7.6.1 如果一个ActiveX控件是可插入的Word就可支持其数据
7.7 ActiveX Control Pad中使用基于属性色的持久性
7.7.1 HTML使用<PARAM>标签支持属性包
7.8 ATL Full ActiveX控件的绘制问题
7.8.1 窗口的有无
7.8.2 规则化设备上下文
7.9 Full ActiveX控件的尺寸问题
7.9.1 ActiveX控件改变大小的方式
7.9.2 ATL对大小改变的支持
7.10 使用ATL创建Panel全控件
7.10.1 按步解释
7.10.2 按行说明
7.11 使用ActiveX Control Pad在HTML中测试ATLPanel控件
7.11.1 按步解释
7.11.2 按行说明
7.11.3 按步解释
7.12 下一步的工作
第八章 ActiveX控件的属性页
8.1 什么是属性页?
8.1.1 属性页是ActiveX控件属性的用户接口
8.1.2 在开发环境中使用属性页
8.1.3 属性页需要持久性的支持来保存它们的数据
8.2 属性页是如何工作的
8.2.1 属性页使用COM接口
8.2.2 属性页创建一个特殊的对话框资源
8.2.3 容器提供标签对话框和按钮
8.3 在ATL中执订属性页
8.3.1 属性页ATL对象
8.3.2 编辑对话框资源
8.3.3 使用代码完成连接
8.4 固化属性页
8.4.1 某些属性具有自动的属性页支持
8.4.2 你不动手ATL也为你添加代码事件
8.5 使用ATL为Panel控件添加属性页支持
8.5.1 按步解释
8.5.2 按行说明
8.5.3 ATL3.0和Visual C++6及对象向导
8.6 使用ActiveX Control Test Container测试Panel的属性页
8.6.1 按步解释
8.7 下一步的工作
第九章 ActiveX控件的事件
9.1 事件是应用程序之间的通告
9.1.1 用户输入需要通告
9.1.2 状态改变需要通告
9.1.3 Windows的方式是使用回调函数
9.2 Windows事件就是消息
9.2.1 Windows消息的体系结构
9.2.2 消息泵
9.2.3 Windows事件管理
9.3 ActiveX事件采用接口处理
9.3.1 连接问题
9.3.2 接口是解决方案
9.3.3 一个关于地形(topography)的新问题
9.4 IConnectionPoint接口
9.4.1 从控件角度来看IConnectionPoint是如何工作的
9.4.2 从容器角度来看IConnectionPoint是如何工作的
9.5 IConnectionPointContainer接口
9.5.1 从控件角度来看IConnectionPointContainer是如何工作的
9.5.2 从容器角度来看IConnectionPointContainer是如何工作的
9.6 ATL如何支持Windows事件
9.6.1 消息映射
9.6.2 事件管理
9.7 ATL如何支持ActiveX事件
9.7.1 连接点映射(Connection Point Maps)
9.7.2 IDL
9.7.3 使用代理生成器需要一个TLB文件
9.7.4 代理类被引入到控件文件需要的地方
9.8 为ATLPanel控件项目添加事件支持
9.8.1 按行说明
9.8.2 按步解释
9.8.3 按行说明
9.9 用Active Control Pad在HTML中测试ATLPanel控件的事件
9.9.1 按行说明
9.9.2 按步解释
9.10 ATL3.0的Connection Point Wizard
9.11 下一步的工作
关于光盘