次の方法で共有


既定のクラス ファクトリと集計モデルの変更

ATL は、CComCoClass を使用して、オブジェクトの既定のクラス ファクトリと集計モデルを定義します。 CComCoClass は次の 2 つのマクロを指定します。

これらの既定値はいずれも、クラス定義で別のマクロを指定することでオーバーライドできます。 たとえば、CComClassFactory の代わりに CComClassFactory2 を使用する場合、次のように 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

クラス ファクトリを定義する他の 2 つのマクロは、DECLARE_CLASSFACTORY_AUTO_THREADDECLARE_CLASSFACTORY_SINGLETON です。

ATL は、既定の動作の実装に、typedef のメカニズムも使用します。 たとえば、DECLARE_AGGREGATABLE マクロは typedef を使用して、_CreatorClass という型を定義します。これはその後 ATL 全体で参照されます。 なお、派生クラスで typedef の名前が基底クラスの typedef と同じ場合、ATL は既定の動作をオーバーライドし、ご自分の定義を使用します。

関連項目

ATL COM オブジェクトの基礎
集計とクラス ファクトリに関するマクロ