第一章 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系統(tǒng)
1.4.6 COM客戶
1.5 靜態(tài)COM,動態(tài)Automation
1.6 Automation使COM向計算機界開放
1.7 從Automation到OCX、ActiveX
1.8 ActiveX控件是帶用戶接口的Automation服務器
1.9 Stock屬性和使ActiveX控件行為標準化的屬性頁
1.10 連接點允許事件從ActiveX控件發(fā)送到容器
1.11 Persistence允許ActiveX控件隨時存貯它們的狀態(tài)
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項目的優(yōu)先主題
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 執(zhí)行接口選項(Implement Interface)
2.8 下一步的工作
第三章 創(chuàng)建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 創(chuàng)建可集合簡單COM服務器EXE
3.7.1 按步解釋
3.7.2 按行說明
3.8 創(chuàng)建一個非集合簡單COM服務器EXE
3.8.1 按步解釋
3.8.2 按行說明
3.9 創(chuàng)建一個包含IE(Internet Explorer)的COM服務器
3.9.1 按步解釋
3.9.2 按行說明
3.10 創(chuàng)建一個集合IE COM服務器
3.10.1 按步解釋
3.10.2 按行說明
3.11 下一步的工作
第四章 建立COM客戶
4.1 COM系統(tǒng)
4.1.1 CoInitialize
4.1.2 CoCreateinstance
4.1.3 CoUninitialize
4.2 C++COM客戶
4.2.1 啟動和停止COM系統(tǒng)
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中用智能指針創(chuàng)建COM客戶
4.6.1 按步解釋
4.6.2 按行說明
4.6.3 按步解釋
4.7 用FPE在HTML中建立一個COM客戶
4.7.1 按行說明
4.7.2 按步解釋
4.8 下步工作
第五章 開發(fā)Automation服務器
5.1 Automation做些什么
5.1.1 C++專有的COM俱樂部
5.1.2 對接口的早捆綁與晚捆綁的比較
5.1.3 現在每一個人都可以使用動態(tài)函數
5.2 Automation是如何工作的?
5.2.1 Dispinterfaces和Interfaces的比較
5.2.2 雙接口具備兩者的優(yōu)點
5.2.3 IDispatch是Automation的核心
s.2.4 GetlDsOfNames容許晚捆綁
5.2.5 Invoke使Automation發(fā)生
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中用靜態(tài)調用建立Automation客戶
5.9.1 按步解釋
5.9.2 按行說明
5.9.3 按步解釋
5.10 用FPE在HTML中建立一個Automation客戶
5.10.1 按行說明
5.10.2 按步解釋
5.11 下一步工作
第六章 創(chuàng)建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 繪圖優(yōu)化
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 下一步的工作
第六章 創(chuàng)建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控件的狀態(tài)
7.3.1 狀態(tài)信息需要以統(tǒng)一的方式保存
7.3.2 復合文檔技術過于復雜
7.3.3 持久性是ActiveX尋找的答案
7.4 基于存儲的持久性
7.4.1 “存儲倉”類似于文件夾
7.4.2 “流”類似于文件
7.5 基于屬性包的持久性
7.5.1 屬性包由容器執(zhí)行
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 規(guī)則化設備上下文
7.9 Full ActiveX控件的尺寸問題
7.9.1 ActiveX控件改變大小的方式
7.9.2 ATL對大小改變的支持
7.10 使用ATL創(chuàng)建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 在開發(fā)環(huán)境中使用屬性頁
8.1.3 屬性頁需要持久性的支持來保存它們的數據
8.2 屬性頁是如何工作的
8.2.1 屬性頁使用COM接口
8.2.2 屬性頁創(chuàng)建一個特殊的對話框資源
8.2.3 容器提供標簽對話框和按鈕
8.3 在ATL中執(zhí)訂屬性頁
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 狀態(tài)改變需要通告
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 下一步的工作
關于光盤