次の方法で共有


CComClassFactory クラス

更新 : 2007 年 11 月

このクラスは、IClassFactory インターフェイスを実装します。

class CComClassFactory : public IClassFactory, 
      public CComObjectRootEx< CComGlobalsThreadModel >

解説

CComClassFactoryIClassFactory インターフェイスを実装します。IClassFactory には、特定の CLSID のオブジェクトを作成するメソッドや、新規オブジェクトをすばやく作成できるようにメモリ中のクラス ファクトリをロックするメソッドが含まれています。IClassFactory は、システム レジストリに登録して CLSID を割り当てる対象の全クラスに実装されている必要があります。

ATL オブジェクトは、通常クラス ファクトリを CComCoClass から派生させることによって作成します。このクラスには DECLARE_CLASSFACTORY マクロが含まれています。このマクロは、CComClassFactory を既定のクラス ファクトリとして宣言します。この既定の設定をオーバーライドするには、クラス定義で、DECLARE_CLASSFACTORYXXX マクロのうちの 1 つを宣言します。たとえば、DECLARE_CLASSFACTORY_EX マクロを宣言すると、指定したクラスがクラス ファクトリとして使用されます。

class ATL_NO_VTABLE CMyCustomClass :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMyCustomClass, &CLSID_MyCustomClass>,
   public IDispatchImpl<IMyCustomClass, &IID_IMyCustomClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
   DECLARE_CLASSFACTORY_EX(CMyClassFactory)

   // Remainder of class declaration omitted.

上のクラス定義は、CMyClassFactory をオブジェクトの既定のクラス ファクトリとして使用するように指定しています。CMyClassFactoryCComClassFactory から派生させる必要があります。また、CreateInstance をオーバーライドする必要もあります。

このほかにも、ATL (Active Template Library) にはクラス ファクトリを宣言するマクロとして、次の 3 つのマクロがあります。

必要条件

ヘッダー : atlcom.h

参照

参照

CComObjectRootEx クラス

CComGlobalsThreadModel

その他の技術情報

CComClassFactory のメンバ

ATL クラスの概要