Compartilhar via


Alterar o padrão fábrica de classes e o modelo de agregação

Usa o ATLCComCoClass para definir o modelo padrão de fábrica e agregação de classe para seu objeto.CComCoClass Especifica as seguintes dois macros:

Você pode substituir esses padrões especificando outra macro na definição de classe.Por exemplo, para usar CComClassFactory2 em vez de CComClassFactory, especifique a DECLARE_CLASSFACTORY2 macro:

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

Duas outras macros que definem uma fábrica de classes são DECLARE_CLASSFACTORY_AUTO_THREAD and DECLARE_CLASSFACTORY_SINGLETON.

ATL também usa o typedef mecanismo para implementar o comportamento padrão. Por exemplo, a DECLARE_AGGREGATABLE macro usa typedef Para definir um tipo de chamada _CreatorClass, que é referenciado, em seguida, em todo o ATL.Observe que em uma classe derivada, um typedef usando o mesmo nome da classe base typedef resultados em ATL usando sua definição e substituindo o comportamento padrão.

Consulte também

Referência

Fundamentos de objetos COM de ATL

Outros recursos

Agregação e fábrica de classes macros