Share via


Fundamentals of ATL COM Objects

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

ATL 結構

注意事項注意事項

圖表運算式, CComObjectCYourClass 從衍生,而 CComAggObjectCComPolyObject 包括 CYourClass 做為成員變數。

有三種定義 ATL COM 物件。 標準選項是使用從 CYourClass衍生的 CComObject 類別。 第二個選項是建立彙總物件使用 CComAggObject 類別。 第三個選項是使用 CComPolyObject 類別。 CComPolyObject 做為混合:它可以做為 CComObject 類別或做為 CComAggObject 類別,視先建立。 如需如何使用 CComPolyObject 類別的詳細資訊,請參閱 CComPolyObject Class

當您使用標準 ATL COM 時,可以使用兩個物件:外部物件和內建 (Intrinsic) 物件。 外部用戶端透過外部物件定義的包裝函式來存取內部物件的功能。 外部物件屬於型別 CComObject

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

由於用戶端不必透過外部物件與內部物件互動,彙總物件通常會更有效率。 此外,外部物件不需要了解彙總物件的功能,只要彙總物件的介面直接供用戶端使用。 不過,並非所有的物件可彙總。 如果要彙總物件,需要設計時未彙總。

以兩個階段的 ATL 實作 IUnknown :

您的 ATL COM 物件的其他方面由其他類別處理:

  • CComCoClass 定義物件的預設 Class Factory 和彙總模型。

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

  • ISupportErrorInfoImpl 實作來確定的 ISupportErrorInfo 介面錯誤訊息進行正確傳播呼叫鏈結。

本章節內容

相關章節

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

  • ATL
    使用 Active Template Library,提供概念性主題連結說明如何撰寫程式。

請參閱

其他資源

Active Template Library (ATL) 概念