Condividi tramite


Changing the Default Class Factory and Aggregation Model

Utilizzare CComCoClass ATL definire la factory della classe predefinita e il modello di aggregazione per l'oggetto. CComCoClass specifica le seguenti due macro:

È possibile eseguire l'override di queste impostazioni predefinite specificando un'altra macro nella definizione della classe. Ad esempio, per utilizzare CComClassFactory2 anziché CComClassFactory, specificare la macro 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

Altre due macro che definiscono una class factory sono DECLARE_CLASSFACTORY_AUTO_THREAD e DECLARE_CLASSFACTORY_SINGLETON.

ATL utilizza il meccanismo typedef per implementare il comportamento predefinito. Ad esempio, la macro DECLARE_AGGREGATABLE utilizza typedef per definire un tipo denominato _CreatorClass, che viene fatto riferimento in qualsiasi ATL. Si noti che in una classe derivata, typedef utilizzando gli stessi nomi dei risultati typedef della classe base in ATL mediante la definizione di eseguire l'override del comportamento predefinito.

Vedere anche

Riferimenti

Fundamentals of ATL COM Objects

Altre risorse

Aggregation and Class Factory Macros