Freigeben über


Changing the Default Class Factory and Aggregation Model

ATL-Verwendung CComCoClass, die Standardklassenfactory und -Aggregation definieren modelliert für das Objekt. CComCoClass gibt die folgenden zwei Makros an:

Sie können einen dieser Vorgaben überschreiben, indem Sie ein anderes Makro in der Klassendefinition angeben. Um beispielsweise CComClassFactory2 anstelle CComClassFactory zu verwenden, geben Sie die DECLARE_CLASSFACTORY2-Makro an:

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

Zwei andere Makros, die eine Klassenfactory definieren, sind DECLARE_CLASSFACTORY_AUTO_THREAD und DECLARE_CLASSFACTORY_SINGLETON.

ATL verwendet auch den typedef Mechanismus, um Standardverhalten zu implementieren. Zum Beispiel verwendet das DECLARE_AGGREGATABLE-Makro typedef, um einen Typ zu definieren, der _CreatorClass aufgerufen wird, der während ATL verwiesen wird. Beachten Sie das in einer abgeleiteten Klasse, typedef mithilfe der gleichen Namen, den typedef der Basisklasse ATL mit der Definition und für das Überschreiben des Standardverhaltens ergibt.

Siehe auch

Referenz

Fundamentals of ATL COM Objects

Weitere Ressourcen

Aggregation and Class Factory Macros