出版時間:2000-11 出版社:電子工業(yè)出版社 作者:(美)Tom Armstrong Ron Patton 譯者:董梁,丁杰等
Tag標(biāo)簽:無
內(nèi)容概要
本書是介紹使用ATL進行軟件開發(fā)的參考用書。全書分為十三章:第一章引入了C++模板的概念;第二章詳細(xì)介紹了組件對象模型(COM);第三章介紹了活動模板庫(ATL)的概念和使用方法;第四章涉及接口的實現(xiàn)和線程之間的參數(shù)調(diào)度等細(xì)節(jié)問題;第五章探討了代碼復(fù)用的兩種方法――包容和集合;第六章討論了關(guān)于自動化的問題;第七章說明了事件和連接點的管理;第八章圍繞ActiveX控件展開了詳細(xì)的論述;第九章介紹了COM中的兩種實體――枚舉器和集合;第十章研究了COM里的線程管理;第十一章討論了OLE DB同ATL之間的關(guān)系;第十二章介紹了兩種GUI接口――對話框和視窗;最后一章解釋了COM+的一些基本概念。
由于書中的內(nèi)容非常龐雜,并且涉及到Visual C++開發(fā)的一些內(nèi)核問題,所以本書對讀者有一定的要求。我們希望你在開始閱讀之前,已經(jīng)了解COM、ActiveX控件的基本知識,并且具有使用Visual C++開發(fā)應(yīng)用程序的實踐經(jīng)驗。本書的主要對象是程序設(shè)計或開發(fā)人員,同時也可以作為大專院校計算機專業(yè)師生和計算機愛好者的參考資料。
書籍目錄
前言
第一章 使用C++模板開發(fā)應(yīng)用程序
1.1 模板簡介
1.1.1 函數(shù)模板
1.1 .2 類模板
1.2 基于模板的堆棧類
1.3 成員函數(shù)的實現(xiàn)
1.4 不定類型的模板參數(shù)
1.5 基于模板的復(fù)用技術(shù)
1.6 ATL如何使用模板
1.7 小結(jié)
第二章 組件對象模型(COM)簡介
2.1 軟件組件及其屬性
2.1.1 同語言的無關(guān)性:二進制的設(shè)計標(biāo)準(zhǔn)
2.1.2 版本升級的魯棒性
2.1. 3 位置的透明性
2.1.4 面向?qū)ο蟮奶匦?br />2.2 COM模型的原始實現(xiàn)
2.2.1 客戶程序和服務(wù)器程序
2.2.2 OLE和ActiveX
2.2.3 Microsoft Transaction Server(MTS)
2.3 COM的精髓:接口
2.3.1 C++的虛函數(shù)表
2.3.2 COM的接口
2.4 對COM接口的訪問
2.5 組件的多接口特性
2.5.1 標(biāo)準(zhǔn)COM接口
2.5.2 HRESULT
2.5.3 IUnknown的實現(xiàn)
2.5.4 組件的生存期
2.5.5 全局特有標(biāo)識符
2.5.6 標(biāo)題標(biāo)識符
2.5.7 注冊表
2.5.8 組件的類別
2.5.9 OLEVIEW
2.5.10 組件的宿主文件
2.5.11 類工廠
2.6 基于COM的復(fù)用技術(shù)
2.6.1 包容(Containment)
2.6.2 集合(Aggregation)
2.7 COM的API函數(shù)
2.7.1 Colnitialize和CoInitializeEx
2.7.2 CoUninitialize
2.7.3 CoRegisterClassObject
2.7.4 CoGetClassObject
2.7.5 CoCreateInstance
2.7.6 DllCanUnloadNow
2.7.7 DllGetClassObject
2. 8 其他涉及COM的問題
2.8.1 C++里關(guān)于COM的宏:STDMETHOD和STDMETHODIMP
2.8.2 COM和Unicode
2.8.3 COM和多態(tài)性
2.9 示例:建立一個簡單的COM客戶程序和服務(wù)器程序
2.9.1 第一步:創(chuàng)建Visual C++工程
2.9.2 第H步:創(chuàng)建IMATH.H文件
2.9.3 第三步:聲明組件和類工廠
2.9.4 第四步:組件類和類工廠類的實現(xiàn)
2.9.5 第五步:創(chuàng)建組件的宿主(SERVER.CPP)
2.9.6 第六步:添加對自注冊和組件類別的支持
2.9.7 第七步:標(biāo)準(zhǔn)入口點的導(dǎo)出
2.9.8 第八步;將文件插入到工程里并建立該工程
2.9.9 第九步:使用OLEVIEW測試Math組件
2.9.10 第十步:建立一個簡單的COM客戶
2.9.11 第十一步:建立客戶工程
2.9.12 對服務(wù)器程序進行調(diào)試
2.9.13 示例中忽略的東西
2.10 小結(jié)
第三章 活動模板庫
3.1 ATL的基本特征
3.2 ATL和MFC
3.3 ATL框架結(jié)構(gòu)概述
3.3.1 ATL的實現(xiàn)
3.3.2 組件的宿主支持
3.3.3 對IUnknown的支持
3.3.4 對類工廠的支持
3.3.5 對COM程序開發(fā)的其他方面的支持
3.4 ATL向?qū)С绦虻氖褂?br />3.4.1 ATL COM AppWizard
3.4.2 ATL對象向?qū)С绦?br />3.4.3 線程管理模型
3.4.4 接口
3.4.5 集合
3.4.6 對ISupportErrorInfo的支持
3.4.7 對連接點的支持
3.4.8 自由線程調(diào)度器
3.5 ObjectWizard里的其他選項
3.6 一個服務(wù)器程序示例
3.6.1 ATL工程的結(jié)構(gòu)
3.6.2 STDAFX.H和STDAFX.CPP
3.6.3 RESOURCE.H和ProjectName.rc
3.6.4 ProjectName.CPP、ProjectName.H和ProjectName.DEF
3.6.5 ProjectName.IDL
3.7 接口定義語言
3.8 ATL工程的建立
3.8.1 ATL的基本宿主支持:CComModule
3.8.2 BEGIN_OBJECT_MAP和OBJECT_ENTRY宏
3.8.3 CComModule
3.8.4 ATL對組件的支持
3.8.5 AddRef和Release所在的位置
3.8.6 CComObject
3.8.7 接口和多重繼承
3.8.8 ATL_NO_VTABLE
3.8.9 ATL的類工廠支持:CComCoClass
3.8.10 自注冊功能與注冊器
3.8.11 ATL和組件的類別
3.9 使用ATL實現(xiàn)Math組件
3.9.1 創(chuàng)建Visual C++工程
3.9.2 ATL COM AppWizard
3.9.3 ATL Object Wizard
3.9.4 Object Wizard里的Names(名稱項)
3.9.5 Object Wizard里的Attributes(屬性項)
3.10 IMath接口的實現(xiàn)
3.11 添加IAdvancedMath及方法
3.11.1 MATH.H文件的改動
3.11.2 MATH.CPP文件的改動
3.12 工程的創(chuàng)建
3.12.1 建立另外一個COM客戶程序
3.12.2 測試服務(wù)器
3.13 小結(jié)
第四章 接口、接口定義語言和調(diào)度
4.1 COM接口類型概述
4.1.1 Vtable接口
4.1.2 IDispatch接口:Dispinterfaces
4.1.3 雙向接口
4.2 組件及其接口的描述
4.2.1 類型信息
4.2.2 調(diào)度
4.3 分布式COM
4.4 標(biāo)準(zhǔn)調(diào)度
4.4.1 類型庫(通用)調(diào)度
4.4.2 自定義調(diào)度
4.5 創(chuàng)建Proxy/Stub DLL
4.6 接口定義語言
4.6.1 基本語法和布局
4.6.2 接口的聲明:方法和屬性
4.7 IDL數(shù)據(jù)類型
4.7.1 數(shù)組
4.7.2 字符串
4.7.3 結(jié)構(gòu)
4.7.4 ENUM類型
4.8 ATL及COM數(shù)據(jù)類型
4.8.1 接口指針
4.8.2 C++智能指針
4.8.3 CComPtr
4.8.4 CComQIPtr
4.8.5 BSTR
4.8.6 CComBSTR
4.9 COM的內(nèi)存管理
4.9.1 CoTaskMemAlloc和CoTaskMemFree
4.9.2 IDL和內(nèi)存管理
4.10 COM中的錯誤處理
4.10.1 ISupportErrorInfo
4.10.2 CreateErrorInfo和ICreateErrorInfo
4.10.3 SetErrorInfo和IErrorInfo
4.11 客戶機和GetErrorInfo
4.12 ATL對錯誤處理的支持
4.12.1 CComCoClass::Error
4.12.2 ISupportErrorInfoImpl
4.13 示例:在一個EXE宿主程序中創(chuàng)建Math組件
4.13.1 步驟一:創(chuàng)建Visual C++工程
4.13.2 步驟二:使用ATL Object Wizard
4.13.3 步驟三:添加IMath和IAdvancedMath接口
4.13.4 步驟四:處理被零除的問題
4.13.5 步驟五:添加IMath2接口
4.13.6 步驟六:添加IComponentInfo接口
4.13.7 步驟七:工程的編譯連接
4.13.8 步驟八:編連并注冊Proxy/Stub DLL
4.14 示例:創(chuàng)建COM客戶機程序
4.15 示例:創(chuàng)建Visual Basic客戶機程序
4.15.1 步驟一:創(chuàng)建應(yīng)用程序窗體
4.15.2 步驟二:為Math組件插入引用
4.15.3 步驟三:添加代碼
4.16 小結(jié)
第五章 包容與集合
5.1 二進制復(fù)用
5.2 COM包容
5.3 COM集合
5.4 ATL對集合的支持
5.5 創(chuàng)建集合組件
5.5.1 選擇性集合
5.5.2 盲目集合
5.6 ATL對包容的支持
5.6.1 FinalConstruct和FinalRelease
5.7 ATL對集合的支持
5.7.1 可集合組件的實現(xiàn)
5.7.2 DECLARE_AGGREGATABLE宏
5.7.3 DECLARE_NOT_AGGREGATABLE宏
5.7.4 DECLARE_ONLY_AGGREGATABLE宏
5.7.5 DECLARE_POLY_AGGREGATABLE宏
5.8 集合的實現(xiàn)
5.8.1 COM_INTERFACE_ENTRY_AGGREGATE
5.8.2 COM_INTERFACE_ENTRY_AGGREGATE_BLIND
5.8.3 COM_INTERFACE_ENTRY_AUTOAGGREGATE宏和COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND宏
5.8.4 DECLARE_GET_CONTROLLING_UNKNOWN宏
5.9 示例:創(chuàng)建一個簡單的Math組件
5.9.1 步驟一:創(chuàng)建實現(xiàn)IMath接口的簡單Math組件
5.9.2 步驟二:實現(xiàn)IMath接口
5.9.3 步驟三:工程的編譯連接(簡單示例)
5.10 示例:使用集合實現(xiàn)高級Math組件
5.10.1 步驟一:實現(xiàn)IAdancedMath接口
5.10.2 步驟二:與簡單的Math組件集合
5.10.3 步驟三:納入集合的CLSID和IID定義的頭文件
5.10.4 步驟四:向類中添加IUnknown指針
5.10.5 步驟五:覆蓋FinalConstruct接口
5.10.6 步驟六:將被集合組件的接口添加到接口映射中
5.10.7 步驟七:釋放被集合的組件
5.10.8 步驟八:測試集合組件
5.11 示例:通過包容實現(xiàn)高級Math組件
5.11.1 步驟一:為IMath添加實現(xiàn)代碼
5.11.2 步驟二:測試包容組件
5.12 小結(jié)
第六章 自動化
6.1 后綁定
6.2 Dispinterface
6.3 雙向接口
6.4 自動化數(shù)據(jù)類型
6.4.1 VARIANT數(shù)據(jù)類型
6.4.2 SafeArray數(shù)據(jù)類型
6.5 實現(xiàn)一個派發(fā)接口
6.5.1 實現(xiàn)IDispatch接口
6.5.2 IDispatch函數(shù)
6.6 雙向接口的實現(xiàn)
6.7 訪問基于IDispatch的接口
6.7.1 后綁定(動態(tài)綁定)
6.7.2 ID綁定(前綁定)
6.8 前綁定的需求信息
6.9 ATL對自動化的支持
6.9.1 IDispatchImpl
6.9.2 CComTypeInfoHolder
6.9.3 CComVariant
6.10 自動化與接口版本更新
6.10.1 IDispatch的版本更新
6.10.2 雙向接口的版本更新
6.11 示例:使用自動化實現(xiàn)Math組件
6.11.1 步驟一:創(chuàng)建Math組件
6.11.2 步驟二:實現(xiàn)IMath接口
6.11.3 步驟三:設(shè)置IDL屬性
6.11.4 步驟四:編連(Build)所生成的工程
6.12 添加第二個IDispatch接口
6.13 實現(xiàn)第三個雙向接口
6.14 創(chuàng)建C++雙向接口客戶機程序
6.15 創(chuàng)建Visual Basic客戶機程序
6.15.1 后綁定
6.15.2 前綁定
6.16 小結(jié)
第七章 事件和連接點
7.1接口的回調(diào)
7.2 引入和引出接口
7.2.1 Advise方法
7.2.2 Visual Basic中的Implements關(guān)鍵字
7.3 回調(diào)示例
7.3.1 步驟一:創(chuàng)建Chapter7_Server工程和Math組件
7.3.2 步驟二:實現(xiàn)IMath接口
7.3.3 步驟三:添加Advise方法
7.3.4 步驟四:定義引出接口
7.3.5 步驟五:通知客戶機程序
7.4 Visual Basic客戶機程序
7.4.1 步驟一:引用Chapter7_CallBackServer的類型庫
7.4.2 步驟二:添加CallBack類
7.4.3 步驟三:通知并傳送組件
7.5 可連接對象
7.5.1 IConnectionPointContainer
7.5.2 IConnectionPoint
7.5.3 連接點、自動化和IProvideClassInfo2
7.5.4 IProvideClassInfo2Impl
7.6 ATL與連接點
7.6.1 Implement Connection Point Wizard向?qū)С绦?br />7.6.2 連接映射
7.6.3 IConnectionPointImpl
7.6.4 IConnectionPointContainerImpl
7.6.5 AtlAdvise
7.6.6 Visual Basic的WithEvents關(guān)鍵字
7.7 使用連接點的一個示例
7.7.1 步驟一:創(chuàng)建Math組件
7.7.2 步驟二:實現(xiàn)IMath接口
7.7.3 步驟三:定義Event接口
7.7.4 步驟四:運行Implement Connection Point Wizard
7.7.5 步驟五:創(chuàng)建一個C++連接點客戶程序
7.7.6 步驟六:編寫Visual Basic連接點客戶機程序
7.8 小結(jié)
第八章 ActiveX控件
8.1 ActiveX控件和容器
8.1.1 容器模式
8.1.2 控件和容器接口
8.2 什么是ActiveX控件
8.2.1 OLE Controls '94規(guī)范
8.2.2 OLE Controls '96規(guī)范
8.2.3 控件和容器設(shè)計指南
8.3 ActiveX控件功能類屬
8.3.1 基本的COM支持
8.3.2 自注冊
8.4 控件注冊表項
8.4.1 Control
8.4.2 Programmable
8.4.3 Insertable
8.4.4 MiscStatus
8.4.5 Verb
8.4.6 ToolboxBitmap32
8.4.7 TypeLib
8.5 組件類屬
8.6 OLE文檔接口
8.7 自動化支持:IDispatch
8.7.1 標(biāo)準(zhǔn)屬性和固有屬性
8.7.2 Ambient屬性
8.7.3 ATL和Ambient屬性
8.7.4 標(biāo)準(zhǔn)控件接口
8.8 可連接對象與控件事件
8.8.1 標(biāo)準(zhǔn)事件
8.8.2 屬性頁
8.9 屬性的持續(xù)性
8.9.1 IPersistStream
8.9.2 IPersistStreamInit
8.9.3 IPersistPropertyBag
8.10 ATL對ActiveX控件的支持
8.10.1 ATL的ActiveX控件支持文件
8.10.2 ATL Object Wizard
8.10.3 Names和Attributes選項卡
8.10.4 Miscellaneous選項卡
8.10.5 View Status選項和透明控件
8.10.6 Misc Status選項
8.10.7 Add Control Based On選項
8.10.8 對話框中的Other選項區(qū)
8.10.9 Stock Properties選項卡
8.11 ATL Object Wizard創(chuàng)建的文件
8.11.1 CComControl
8.11.2 CComControlBase
8.11.3 CWindowImpl
8.11.4 CStockPropImpl
8.12 初始化固有字體屬性
8.13 IOleObjectImpl
8.14 限制控件的大小
8.15 IViewObjectImpl
8.16 CComControl::OnDraw
8.17 IDataObjectImpl
8.18 IOleInPlaceObjectImpl
8.19 IOleInPlaceActiveObjectImpl
8.20 IOleControlImpl
8.Z1 IPersistStreamInitImpl和IPersistStorageImpl
8.22 屬性映射
8.23 ATL對屬性頁的支持
8.23.1 CDialogImpl類
8.23.2 IpropertyPageImpl類
8.24 創(chuàng)建一個示例控件
8.24.1 創(chuàng)建控件的宿主程序
8.24.2 ATL Object Wizard的使用
8.24.3 ATL Object Wizard的Names和Attributes選項卡
8.24.4 ATL Object Wizard的Miscellaneous選項卡
8.24.5 ATL Object Wizard的Stock Properties選項卡
8.25 創(chuàng)建一個基本的控件
8.25.1 初始化固有屬性
8.25.2 CComControl::OnDraw
8.25.3 實現(xiàn)控件屬性的持久性:Property Map
8.26 添加固有屬性頁
8.27 添加自定義屬性頁
8.28 向控件中添加事件
8.29 使用Connection Point Wizard
8.30 小結(jié)
第九章 COM的枚舉器和集合
9.1 COM枚舉器
9.1.1 內(nèi)部枚舉器接口
9.1.2 IEnumString接口
9.2 客戶枚舉器的訪問
9.3 ATL的枚舉器支持
9.4 CComEnum的應(yīng)用
9.5 建立一個簡單的枚舉器客戶應(yīng)用程序
9.6 實現(xiàn)一個簡單的枚舉器對象
9.6.1 步驟1:創(chuàng)建ATL服務(wù)器工程
9.6.2 步驟2:實現(xiàn)枚舉器對象
9.6.3 步驟3:訪問這一簡單的枚舉器服務(wù)器
9.7 COM集合技術(shù)
9.7.1 集合對象的實現(xiàn)
9.7.2 ATL對集合的支持
9.8 movie集合的實現(xiàn)
9.8.1 步驟1:創(chuàng)建ATL集合服務(wù)器工程
9.8.2 步驟2:實現(xiàn)movie組件
9.8.3 步驟3:修改IDL文件
9.8.4 步驟4:實現(xiàn)movie的集合組件
9.8.5 步驟5:定義IMovieCollection接口
9.8.6 步驟6:實現(xiàn)IApplication接口
9.8.7 步驟7:創(chuàng)建工程
9.9 創(chuàng)建Visual Basic客戶程序
9.10 創(chuàng)建C++客戶程序
9.11 小結(jié)
第十章 COM的線程管理
10.1 COM線程管理概述
10.1.1 單線程單元
10.1.2 多線程單元
10.1.3 單元
10.1.4 進程內(nèi)組件
10.2 單線程單元
10.2.1 主STA
10.2.2 STA組件的需求(概要)
10.3 多線程單元
10.3.1 MTA組件的需求(概要)
10.3.2 混合模型組件的需求
10.4 自由線程管理的調(diào)度器
10.5 CoMarshalInterThreadInterfaceInStream
10.6 代碼示例
10.7 ATL和COM的線程管理
10.7.1 Single和Apartment選項
10.7.2 CComSingleThreadModel
10.7.3 Free和Both選項
10.7.4 Free-Threaded Marshaler選項
10.7.5 CComObjectRoot
10.8 線程管理的示例
10.8.1 步驟1:創(chuàng)建math組件
10.8.2 步驟2:IMath接口的實現(xiàn)
10.8.3 步驟3:定義事件接口
10.8.4 步驟4:實現(xiàn)Advise方法
10.8.5 步驟5:在線程內(nèi)執(zhí)行計算
10.8.6 步驟6:工程的創(chuàng)建
10.9 一個C++客戶應(yīng)用程序
10.10 小結(jié)
第十一章 OLE DB和ATL
11.1 Microsoft數(shù)據(jù)訪問技術(shù)的歷史回顧
11.1.1 ODBC
11.1.2 OLEDB
11.2 ATL和OLEDB
11.2.1 ATL OLE DB Provider模板
11.2.2 數(shù)據(jù)源類
11.2.3 對話類
11.2.4 行集合類
11.2.5 命令類
11.3 ATL OLE DB Consumer模板
11.3.1 通用數(shù)據(jù)源支持
11.3.2 行集合和綁定支持
11.3.3 表格和命令支持
11.3.4 用戶記錄
11.4 活動數(shù)據(jù)對象
11.5 示例
11.5.1 通用工程概述
11.5.2 數(shù)據(jù)源文件
11.5.3 表格文件
11.5.4 創(chuàng)建Provider工程
11.5.5 模式信息的提供
11.5.6 數(shù)據(jù)管理器的建立
11.5.7 通過ADO訪問OLE DB Providers
11.5.8 MFC/ATL Consumer的例子
11 .6 小結(jié)
第十二章 對話框和窗口
12.1 ATL的窗口創(chuàng)建類
12.1.1 CWindow
12.1.2 CWindowImpl和消息映射
12.1.3 CWinTraits
12.1.4 CSimpleDialog
12.1.5 CDialogImpl
12.2 建立一個簡單的Window GUI
12.2.1 步驟1:創(chuàng)建一個簡單的窗口
12.1.2 步驟2:創(chuàng)建模態(tài)對話框
12.2.3 步驟3:創(chuàng)建非模態(tài)對話框
12.3 小結(jié)
第十三章 COM+入門
13.1 Window DNA
13.2 COM+MTS=COM+
13.3 COM+提供的服務(wù)
13.4 COM+的目錄(Catalog)
13.5 COM+的裝載均衡服務(wù)
13.6 COM+的IMDB服務(wù)
13.7 COM+的對象緩存服務(wù)
13.8 COM+的隊列組件
13.9 COM+事件
13.10 COM+的安全性服務(wù)
13.11 Visual C++未來的變化
13.11.1 基于屬性的編程思路
13.11.2 屬性語法
13.11.3 編譯器的變化
13.11.4 接口描述符
13.12 最后一個例子
13.13 邁向COM+環(huán)境
13.14 小結(jié)
附錄 Visual C++自帶的COM支持
A.1 智能指針:_com_ptr_t
A.2 BSTR(_bstr_t)
A.3 Variant(_variant_t)
A.4 COM的錯誤處理(_com_error)
A.5 #import指令
A.6 TLI和TLH文件
A.7 應(yīng)該使用哪一種技術(shù)
A.8 客戶應(yīng)用程序示例
A.9 Chapter 6_NativeClient示例
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載