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:
DECLARE_CLASSFACTORY declara o factory da classe para ser CComClassFactory.
DECLARE_AGGREGATABLE declara que o objeto pode ser agregado.
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