Změna výchozí třída a agregace modelu
Používá ATL CComCoClass definovat výchozí třídu factory a agregace model pro objekt.CComCoClassUrčuje dvě následující makra:
DECLARE_CLASSFACTORY prohlašuje tříd se CComClassFactory.
DECLARE_AGGREGATABLE prohlašuje, že objekt lze agregovat.
Buď tato výchozí nastavení můžete přepsat zadáním jiného makra ve své definici třídy.Například pomocí CComClassFactory2 namísto CComClassFactory , zadejte DECLARE_CLASSFACTORY2 makro:
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
Jsou dvě makra, které definují třídu factory DECLARE_CLASSFACTORY_AUTO_THREAD a DECLARE_CLASSFACTORY_SINGLETON.
ATL používá také typedef mechanismus implementují výchozí chování.Například DECLARE_AGGREGATABLE makro používá typedef definovat typ s názvem _CreatorClass, který potom odkazované v celém ATL.Všimněte si, že v odvozené třídě typedef pomocí stejného názvu jako základní třída typedef výsledkem ATL pomocí své definice a anuluje výchozí nastavení.