Ändern der Standardklassen-Factorys und des Aggregations-Modells
ATL-Verwendung CComCoClass, die Standardklassenfactory und -Aggregation definieren modelliert für das Objekt.CComCoClass gibt die folgenden zwei Makros an:
DECLARE_CLASSFACTORY deklariert die Klassenfactory, um CComClassFactory zu sein.
DECLARE_AGGREGATABLE deklariert, dass das Objekt aggregiert werden kann.
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
Grundlagen von ATL-COM-Objekten