Zmienianie domyślnej klasy fabrycznej i modelu agregacji
Używa ATL CComCoClass do definiowania domyślnej klasy fabrycznej i agregacji modelu obiektu.CComCoClassOkreśla dwa następujące makra:
DECLARE_CLASSFACTORY deklaruje Fabryczna klasa za CComClassFactory.
DECLARE_AGGREGATABLE deklaruje obiektu można agregować.
Albo te ustawienia domyślne można zastąpić przez określenie innego makra w Państwa definicji klasy.Na przykład, aby użyć CComClassFactory2 zamiast CComClassFactory, określ 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
Są dwa makr definiujących Fabryczna klasa DECLARE_CLASSFACTORY_AUTO_THREAD i DECLARE_CLASSFACTORY_SINGLETON.
Używa również ATL typedef mechanizmu implementują domyślne zachowanie.Na przykład DECLARE_AGGREGATABLE używa makra typedef , aby zdefiniować typ o nazwie _CreatorClass, następnie odwołują całej ATL.Należy zauważyć, że w klasie pochodnej typedef przy użyciu tej samej nazwy jako klasa podstawowa typedef skutkuje ATL przy użyciu programu definicji i zastępowanie zachowania domyślnego.