Compartir a través de


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:

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

Otros recursos

Aggregation and Class Factory Macros