共用方式為


變更預設 Class Factory 和彙總模型

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

您可以在類別定義中指定另一個宏,以覆寫這其中一個預設值。 例如,若要使用 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_THREAD DECLARE_CLASSFACTORY_SINGLETON

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

另請參閱

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