共用方式為


ATL COM 物件的基本概念

下圖描述用來定義 ATL COM 物件之類別和介面之間的關聯性。

Diagram of the classes and interfaces used to define an A T L object.

注意

此圖表顯示 CComObject 衍生自 CYourClass ,而 CComAggObjectCComPolyObject 包含 CYourClass 為成員變數。

有三種方式可以定義 ATL COM 物件。 標準選項是使用衍生自 CYourClassCComObject 類別。 第二個選項是使用 CComAggObject 類別建立匯總物件。 第三個選項是使用 類別 CComPolyObjectCComPolyObject 做為混合式:視第一次 CComObject 建立的方式而定,它可以作為類別或類別 CComAggObject 運作。 如需如何使用 CComPolyObject 類別的詳細資訊,請參閱 CComPolyObject 類別

當您使用標準 ATL COM 時,您會使用兩個物件:外部物件和內建物件。 外部用戶端會透過外部物件中定義的包裝函式存取內建物件的功能。 外部物件的類型為 CComObject

當您使用匯總物件時,外部物件不會提供內建物件功能的包裝函式。 相反地,外部物件會提供外部用戶端直接存取的指標。 在此案例中,外部物件的類型 CComAggObject 為 。 內建物件是外部物件的成員變數,且屬於 類型 CYourClass

由於用戶端不需要經過外部物件來與內建物件互動,因此匯總的物件通常更有效率。 此外,外部物件不需要知道匯總物件的功能,因為匯總物件的介面直接可供用戶端使用。 不過,並非所有物件都可以匯總。 若要匯總物件,必須以匯總為考慮設計物件。

ATL 會在 兩個階段中實作 IUnknown

ATL COM 物件的其他層面是由其他類別處理:

  • CComCoClass 會定義物件的預設類別處理站和匯總模型。

  • IDispatchImpl 提供物件上任何雙重介面部分的預設實 IDispatch Interface 作。

  • ISupportErrorInfoImpl ISupportErrorInfo 實作介面,以確保可以正確地傳播呼叫鏈結的錯誤資訊。

本節內容

實作 CComObjectRootEx
顯示實作 的 CComObjectRootEx 範例 COM 對應專案。

實作 CComObject、CComAggObject 和 CComPolyObject
討論DECLARE_*_AGGREGATABLE宏如何影響 CComAggObjectCComPolyObject 的使用 CComObject

支援 IDispatch 和 IErrorInfo
列出用於支援 和 IErrorInfo 介面的 IDispatch ATL 實作類別。

支援 IDispEventImpl
討論實作類別連接點的步驟。

變更預設 Class Factory 和彙總模型
顯示要用來變更預設類別處理站和匯總模型的宏。

建立彙總物件
列出建立匯總物件的步驟。

建立 ATL 專案
提供建立 ATL COM 物件的相關資訊。

Atl
提供有關如何使用 Active Template Library 進行程式設計的概念性主題連結。

另請參閱

概念