Změna výchozího objektu pro vytváření tříd a agregačního modelu
ATL používá CComCoClass k definování výchozího objektu pro vytváření tříd a agregační model objektu. CComCoClass
určuje následující dvě makra:
DECLARE_CLASSFACTORY Deklaruje objekt pro vytváření tříd jako CComClassFactory.
Kteroukoli z těchto výchozích hodnot můžete přepsat zadáním jiného makra v definici třídy. Chcete-li například použít CComClassFactory2 mí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
Dvě další makra definující objekt pro vytváření tříd jsou DECLARE_CLASSFACTORY_AUTO_THREAD a DECLARE_CLASSFACTORY_SINGLETON.
ATL také používá mechanismus k implementaci výchozího typedef
chování. Například makro DECLARE_AGGREGATABLE používá typedef
k definování typu volaný _CreatorClass
, který se pak odkazuje v rámci knihovny ATL. Všimněte si, že v odvozené třídě se typedef
použije stejný název jako výsledek základní třídy typedef
v ATL pomocí vaší definice a přepsání výchozího chování.
Viz také
Základy ATL – objekty COM
Agregační makra a makra objektu pro vytváření tříd