Udostępnij za pośrednictwem


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.

  • DECLARE_AGGREGATABLE deklaruje, że obiekt można agregować.

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