atl 即活動模板庫,是一套基於模板的 c++ 類,使用這些類可以容易地建立小型、快速的元件物件模型 (com) 物件。它具有對主要 com
功能的特殊支援,包括:iunknown、iclassfactory、iclassfactory2 和 idispatch 的常用實現;雙重介面;標準 com 列舉數介面;連
接點;分開的介面;activex 控制項。
[[看來,atl是用c++開發com的乙個很好的選擇!]]
atl **可以用來建立單執行緒物件、單元模型物件、自由執行緒模型物件或既是自由執行緒又是單元模型的物件。
模板有一些像巨集。與使用巨集一樣,呼叫模板將使它展開(伴隨適當的引數替換)為已經編寫的**。但是,模板比這更進一步,它允許基於
作為引數傳遞的型別建立新類。這些新類能夠實現以型別安全的方法執行在模板**中表示的操作。
模板庫(如 atl)與傳統的 c++ 類庫的區別在於:它們通常只作為源**(或作為具有少量的提供支援的執行時的源**)提供,並且在
本質上沒有固有的分層結構或沒有必要有分層結構。不是從類中派生以得到所需的功能,而是從模板中例項化類。
atl 使您可以很容易建立 com 物件、自動化伺服器和 activex 控制項。atl 為許多基本的 com 介面提供內建支援。
atl 作為在應用程式中包括的源**提供。atl 還使乙個 dll (atl71.dll) 可用,該 dll 包含可以在多個元件之間共享的**。但是,該
dll 並非必要。
[[看過一些講com的書上說:com只是一種規範,而它的表現形式通常是乙個dll!但是並不絕對是dll!
那還有什麼形式呢?]]
使用 atl
atl 對於用 c++ 建立 com 元件和節省空間都是一種快速簡便的方法。如果不需要 mfc 自動提供的所有內建功能,使用 atl 建立控制項。
使用 mfc
mfc 允許建立具有完整功能的應用程式、activex 控制項和活動文件。如果已經使用 mfc 建立了控制項,可能需要繼續使用 mfc 進行開發。
當建立新控制項時,如果不需要 mfc 的所有內建功能,可考慮使用 atl。
[[呵呵,看來atl比mfc要好不少了!最起碼體積佔優勢呀!
不過,到這裡可以有一些肯定的問題了,atl:活動模板庫、mfc基本類庫!都是類庫!atl和mfc是平行的!不要搞出笑話!]]
活動模板庫 (atl) 是一套基於模板的 c++ 類,用以簡化小而快的 com 物件的編寫。
[[atl是一套現成的類庫,提供給程式設計師,目的是編寫com物件的!]]
使用 atl 專案嚮導的「應用程式設定」頁為新 atl 專案設計和新增基本功能。
屬性化
預設值。建立使用屬性的 atl 專案。選擇此選項後,module 屬性將插入到專案的 .cpp 檔案中。該屬性自動實現 dllmain、
dllregisterserver、dllunregisterserver、dllgetclassobject 和 dllcanunloadnow。atl 專案嚮導生成兩個專案:支援屬性的框架
atl dll 專案(稱為 projname)和**/存根 (stub) 專案(稱為 projnameps)。
屬性化專案不允許 mfc 支援和合併**/存根 (stub) **。
預設情況下,其他將物件和控制項插入專案的 atl 嚮導使用屬性化**。
伺服器型別
從三種伺服器型別中選擇一種:
動態鏈結庫 (dll)
選擇以建立程序內伺服器。
可執行檔案 (exe)
選擇以建立本地程序外伺服器。此選項不允許 mfc 或 com+ 1.0 支援。它不允許合併**/存根 (stub) **。
服務 (exe)
選擇以建立當 windows 啟動時在後台執行的 windows 應用程式。此選項不允許 mfc 或 com+ 1.0 支援,也不允許合併**/存根 (
stub) **。
附加選項
注意 所有的附加選項僅適用於 dll 專案。
允許合併**/存根(stub)**
選擇「允許合併**/存根(stub)**」核取方塊是為了需要封送處理介面時比較方便。此選項在與伺服器相同的 dll 中放置 midl 生成的**
和存根 (stub) **。
支援 mfc
選擇以指定物件包含 mfc 支援。此選項將專案鏈結到 mfc 庫,以便可以訪問它們包含的任何類和函式。
支援 com+ 1.0
選擇修改專案生成設定以支援 com+ 1.0 元件。除標準庫列表以外,嚮導還新增了 com+ 1.0 元件特定庫 comsvcs.lib
另外,當啟動應用程式時 mtxex.dll 在主系統上延遲載入。
支援元件註冊器 如果 atl 專案包含對 com+ 1.0 元件的支援,則可以設定此選項。元件註冊器使 com+ 1.0 物件得以獲取元件列表、注
冊元件或登出元件(個別或同時)。
從msdn裡學習
ATL學習筆記
1 iobj01 介面定義。2 ccomobjectrootex 實現 了所有介面的公共部分,即 addref 和 release 操作,但是這兩個操作的命名是 internaladdref 和 internalrelease 3 ccomcoclass 定義了兩個靜態方法 ccomcreator ...
ATL學習筆記
整理下 atl 引用計數執行緒模型 atl 臨界區 atl 核心com繼承類之ccomobjectrootex及ccomobjectlock atl 核心com繼承類之idispatchimpl及呼叫 atl com類之啟用 atl 介面對映 atl 執行緒池的使用 atl ccomcreator ...
ATL 學習備忘錄
1.編繹錯誤 error lnk2005 x already defined in atlmincrt.lib atlinit.obj 解決辦法 開啟release版本的專案配置項,把configuration properties general minimize crt use in atl設定...