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:
DECLARE_CLASSFACTORY Declara el generador de clases como CComClassFactory.
DECLARE_AGGREGATABLE Declara que el objeto se puede agregar.
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