ATL學習筆記 一

2021-09-08 05:41:33 字數 2427 閱讀 4280

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設定...