活動模板庫
活動模板庫(Active Template Library (ATL))是一個以C++模板技術的類的集合,是Microsoft為了簡化組件對象模型(COM)的程式設計而發佈的。 COM旨在允許開發者利用Visual C++創造各種各樣的元件,包括OLE Automation伺服器,與ActiveX控制項。[1] [2] Patterned after the Standard Template Library (STL), ATL 包含一個物件精靈(object wizard),當設定好主要的物件結構後,能夠產生快速與較小的程式。
通過MFC可以提供網際網路市場所需的控制項,但是市場上還需要可以從網路上下載的輕量級控制項。MFC程式通常較大而且需要支援DLL。 [3] ATL允許建立不需要支援DLL的更小的控制項,所以ATL是一種在COM控制項環境下MFC的輕量級替代物。
標頭檔
- afxwin.h
- afximpl.h 實現了一套模板庫,如CArray, CList, CMap等。因為在發布時STL尚未進入C++語言標準,因此ATL自行開發實現了一套。
編譯選項
ATL定義三個宏來來影響生成的COM伺服器的最佳化。
- _ATL_MIN_CRT 伺服器不連結標準的C/C++執行庫,並且ATL提供了函式malloc、realloc、new和delete的一個實現。不能呼叫任何其他的C/C++執行庫的函式。_mainATL精靈生成的ATL工程為所有的Release版本的定義了_ATL_MIN_CRT,但是沒有為Debug版本定義這個符號宏。
- _ATL_DLL 伺服器動態連結工具函式庫atl.dll
- _ATL_STATIC_REGISTRY 伺服器靜態連結對組件註冊的支援
Debug組態沒有定義上述三個符號宏。Release MinSize組態定義了_ATL_MIN_CRT和_ATL_DLL。Release MinDependency組態定義了_ATL_MIN_CRT和_ATL_STATIC_REGISTRY。
相關條目
歷史
- ATL版本3.0 (Visual Studio 6.0)
- ATL版本7.0 (Visual Studio 2003)
- ATL版本8.0 (Visual Studio 2005)
支援類
ATL包含了許多RAII類以簡化對COM類型的管理。常用的有:
編譯器COM支援類
雖然不是ATL的正式組成部分,Microsoft Visual C++包含額外的C++ RAII類以簡化對COM類型的管理,可替代或配合ATL中對應的部分:
_com_ptr_t
[8]裝飾COM介面的智慧型執政,字首以"Ptr"。_bstr_t
[9] BSTR包裝器_variant_t
[10] VARIANT包裝器_com_error
[11] HRESULT包裝器
注意從Visual Studio 2012起,編譯器COM支援類不再包含SAFEARRAY包裝器。
參考資料
- ^ Grimes, Richard. ATL and COM. ATL COM 1st edition. Wrox Press. 1998: pg. 6. ISBN 1-86100-249-1.
- ^ Grimes, Richard. Building and calling a COM object using ATL. Beginning ATL 3 COM Programming 1st edition. Wrox Press. 1999: pg. 63. ISBN 978-1-86100-120-7.
- ^ Williams, Mickey. Active Documents. Visual C++ 6 Unleashed 1st edition. Sams. 2000: pg. 733. ISBN 978-0-672-31241-0.
- ^ Microsoft MSDN: CComPtr Class (頁面存檔備份,存於網際網路檔案館)
- ^ Microsoft MSDN: CComBSTR Class (頁面存檔備份,存於網際網路檔案館)
- ^ Microsoft MSDN: CComVariant Class (頁面存檔備份,存於網際網路檔案館)
- ^ Microsoft MSDN: CComSafeArray Class (頁面存檔備份,存於網際網路檔案館)
- ^ Microsoft MSDN: _com_ptr_t Class (頁面存檔備份,存於網際網路檔案館)
- ^ Microsoft MSDN: _bstr_t Class (頁面存檔備份,存於網際網路檔案館)
- ^ Microsoft MSDN: _variant_t Class (頁面存檔備份,存於網際網路檔案館)
- ^ Microsoft MSDN: _com_error Class (頁面存檔備份,存於網際網路檔案館)