共用方式為


變更預設 Class Factory 和彙總模型

ATL 會使用 CComCoClass 來定義對象的預設類別處理站和匯總模型。 CComCoClass 指定下列兩個巨集:

  • DECLARE_CLASSFACTORY宣告類別處理站為 CComClassFactory

  • DECLARE_AGGREGATABLE 宣告可以匯總您的物件。

您可以在類別定義中指定另一個巨集,以覆寫這其中一個預設值。 例如,若要使用 CComClassFactory2 而非 CComClassFactory,請指定 DECLARE_CLASSFACTORY2 巨集:

class ATL_NO_VTABLE CMyClass2 :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMyClass2, &CLSID_MyClass>,
   public IDispatchImpl<IMyClass, &IID_IMyClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
   public IDispatchImpl<IMyDualInterface, &__uuidof(IMyDualInterface), &LIBID_NVC_ATL_COMLib, /* wMajor = */ 1, /* wMinor = */ 0>
{
public:
   DECLARE_CLASSFACTORY2(CMyLicense)

   // Remainder of class declaration omitted

另外兩個定義類別處理站的巨集會 DECLARE_CLASSFACTORY_AUTO_THREADDECLARE_CLASSFACTORY_SINGLETON

ATL 也會使用機制 typedef 來實作預設行為。 例如,DECLARE_AGGREGATABLE巨集會使用 typedef 來定義稱為 _CreatorClass的型別,然後在整個 ATL 中參考。 請注意,在衍生類別中, typedef 使用與基類相同名稱的 typedef ,會在ATL中使用您的定義並覆寫預設行為。

另請參閱

ATL COM 物件的基本概念
彙總和 Class Factory 巨集