Changing the Default Class Factory and Aggregation Model
ATL utiliza CComCoClass para definir el modelo predeterminado de generador y la agregación de clase del objeto. CComCoClass especifica las dos macros siguientes:
DECLARE_CLASSFACTORY declara el generador de la clase se CComClassFactory.
DECLARE_AGGREGATABLE declara que el objeto puede agregarse.
Puede reemplazar cualquiera de estos valores predeterminados especificando otra macro en la definición de clase. Por ejemplo, para utilizar CComClassFactory2 en lugar de CComClassFactory, especifique la macro de 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 utiliza el mecanismo de typedef para implementar el comportamiento predeterminado. Por ejemplo, la macro de DECLARE_AGGREGATABLE utiliza typedef para definir un tipo denominado _CreatorClass, que se hace referencia en ATL. Observe que en una clase derivada, typedef utilizando el mismo nombre que los resultados de typedef de clase base en ATL mediante la definición y reemplazar el comportamiento predeterminado.
Vea también
Referencia
Fundamentals of ATL COM Objects