Zmienianie domyślnej fabryki klas i modelu agregacji
Usługa ATL używa klasy CComCoClass do definiowania domyślnej fabryki klas i modelu agregacji dla obiektu. CComCoClass
określa następujące dwa makra:
DECLARE_CLASSFACTORY deklaruje fabrykę klas jako CComClassFactory.
Możesz zastąpić jedną z tych wartości domyślnych, określając inne makro w definicji klasy. Aby na przykład użyć CComClassFactory2 zamiast CComClassFactory
, określ makro 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
Dwa inne makra definiujące fabrykę klas są DECLARE_CLASSFACTORY_AUTO_THREAD i DECLARE_CLASSFACTORY_SINGLETON.
Usługa ATL używa typedef
również mechanizmu do implementowania zachowania domyślnego. Na przykład makro DECLARE_AGGREGATABLE używa typedef
do definiowania typu o nazwie _CreatorClass
, który następnie odwołuje się do całego ATL. Należy pamiętać, typedef
że w klasie pochodnej, używając tej samej nazwy co wyniki klasy typedef
bazowej ATL przy użyciu definicji i przesłaniając zachowanie domyślne.
Zobacz też
Podstawowe informacje na temat obiektów COM ATL
Makra agregacji i fabryki klas