共用方式為


Changing the Default Class Factory and Aggregation Model

使用 ATL CComCoClass 定義預設 Class Factory 和您的物件模型中的彙總。 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

定義 Class Factory 的其他兩個巨集就 DECLARE_CLASSFACTORY_AUTO_THREADDECLARE_CLASSFACTORY_SINGLETON

ATL 也使用 typedef 機制實作預設行為。 例如, DECLARE_AGGREGATABLE 巨集使用 typedef 定義呼叫 _CreatorClass的型別,然後參考在 ATL 中。 請注意在衍生類別中,請使用名稱 typedef 和 ATL 中的基底類別 (Base Class) 的 typedef 結果相同使用您的定義以及覆寫預設行為。

請參閱

參考

Fundamentals of ATL COM Objects

其他資源

Aggregation and Class Factory Macros