Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
ATL använder CComCoClass för att definiera standardklassfabriken och aggregeringsmodellen för ditt objekt.
CComCoClass anger följande två makron:
DECLARE_CLASSFACTORY Deklarerar klassfabriken som CComClassFactory.
DECLARE_AGGREGATABLE Deklarerar att objektet kan aggregeras.
Du kan åsidosätta något av dessa standardvärden genom att ange ett annat makro i klassdefinitionen. Om du till exempel vill använda CComClassFactory2 i stället för CComClassFactoryanger du DECLARE_CLASSFACTORY2 makro:
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
Två andra makron som definierar en klassfabrik är DECLARE_CLASSFACTORY_AUTO_THREAD och DECLARE_CLASSFACTORY_SINGLETON.
ATL använder också mekanismen typedef för att implementera standardbeteende. Det DECLARE_AGGREGATABLE makrot använder typedef till exempel för att definiera en typ med namnet _CreatorClass, som sedan refereras till i hela ATL. Observera att i en härledd klass resulterar en typedef med samma namn som basklassens typedef i att ATL använder din definition och åsidosätter standardbeteendet.
Se även
Grunderna i ATL COM-objekt
Aggregerings- och klassfabriksmakron