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:
DECLARE_CLASSFACTORY Declara a fábrica de classes ser CComClassFactory.
DECLARE_AGGREGATABLE Declara que o objeto pode ser agregado.
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