Compartilhar via


Modificando o modelo padrão de fábrica e de distribuição de classe

Usos CComCoClass de ATL definir o factory e a agregação padrão da classe padrão para o objeto.CComCoClass especifica os dois seguintes macros:

Você pode substituir qualquer uma de essas opções especificando outro macro em sua definição de classe.Por exemplo, para usar CComClassFactory2 em vez de CComClassFactory, especifique a 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

Outros dois macros que definem uma fábrica de classe são DECLARE_CLASSFACTORY_AUTO_THREAD e DECLARE_CLASSFACTORY_SINGLETON.

ATL também usa o mecanismo de typedef para implementar o comportamento padrão.Por exemplo, a macro de DECLARE_AGGREGATABLE usa typedef para definir um tipo chamado _CreatorClass, que é referenciado em todo ATL.Observe que em uma classe derivada, typedef usando o mesmo nome que os resultados de typedef de classe de base 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

Macros de fábrica de distribuição e uma classe