共用方式為


ATL COM 物件的基本概念

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

ATL 結構

注意事項注意事項

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

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

當您使用標準 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,提供概念性主題連結說明如何撰寫程式。

請參閱

其他資源

ATL 概念