Compartir a través de


Cambiar el generador de clases y el modelo de agregación predeterminados

ATL usa CComCoClass para definir el generador de clases y el modelo de agregación predeterminados para el objeto. CComCoClass especifica las dos siguientes macros:

Puede reemplazar cualquiera de estos valores predeterminados especificando otra macro en la definición de clase. Por ejemplo, para usar CComClassFactory2 en vez de CComClassFactory, especifique 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

Otras dos macros que definen un generador de clases son DECLARE_CLASSFACTORY_AUTO_THREAD y DECLARE_CLASSFACTORY_SINGLETON.

ATL también usa el mecanismo typedef para implementar el comportamiento predeterminado. Por ejemplo, la macro DECLARE_AGGREGATABLE usa typedef para definir un tipo denominado _CreatorClass, al que se hace referencia a través de ATL. Tenga en cuenta que, en una clase derivada, un objeto de typedef que usa el mismo nombre que la typedef de la clase base lleva a que ATL use la definición que usted haya establecido y reemplace el comportamiento predeterminado.

Consulte también

Aspectos básicos de los objetos ATL COM
Macros de agregación y generador de clases