次の方法で共有


CComClassFactory クラス

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

構文

class CComClassFactory
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

メンバー

パブリック メソッド

名前 説明
CComClassFactory::CreateInstance 指定した CLSID のオブジェクトを作成します。
CComClassFactory::LockServer メモリ内のクラス ファクトリをロックします。

解説

CComClassFactory は、IClassFactory インターフェイスを実装します。これには、特定の CLSID のオブジェクトを作成するためのメソッドと、新しいオブジェクトをより迅速に作成できるようにするためにクラス ファクトリをメモリにロックするためのメソッドが含まれます。 IClassFactory は、システム レジストリに登録し、CLSID を割り当てるすべてのクラスに実装する必要があります。

通常、ATL オブジェクトは、クラス ファクトリを CComCoClass から派生させて取得します。 このクラスには、CComClassFactory を既定のクラス ファクトリとして宣言する DECLARE_CLASSFACTORY マクロが含まれます。 この既定値をオーバーライドするには、クラス定義で、DECLARE_CLASSFACTORYXXX マクロのいずれかを指定します。 たとえば、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 がオブジェクトの既定のクラス ファクトリとして使用されます。 CMyClassFactory は、CComClassFactory から派生して、CreateInstance をオーバーライドする必要があります。

ATL にはこの他に、クラス ファクトリを宣言するマクロが 3 つあります。

要件

ヘッダー: atlcom.h

CComClassFactory::CreateInstance

指定した CLSID のオブジェクトを作成し、このオブジェクトへのインターフェイス ポインターを取得します。

STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);

パラメーター

pUnkOuter
[in] オブジェクトを集計の一部として作成中の場合、pUnkOuter は外部の不明な値である必要があります。 それ以外の場合、pUnkOuter は NULL である必要があります。

riid
[入力] 要求された インターフェイスの IID。 pUnkOuter が NULL 以外の場合、riidIID_IUnknown である必要があります。

ppvObj
[出力] riid によって識別されるインターフェイス ポインターへのポインター。 オブジェクトがこのインターフェイスをサポートしていない場合、ppvObj は NULL に設定されます。

戻り値

標準の HRESULT 値。

CComClassFactory::LockServer

_Module::Lock_Module::Unlock をそれぞれ呼び出すことで、モジュールのロック数をインクリメントおよびデクリメントします。

STDMETHOD(LockServer)(BOOL fLock);

パラメーター

fLock
[in] TRUE の場合、ロック数はインクリメントされます。それ以外の場合、ロック数はデクリメントされます。

戻り値

標準の HRESULT 値。

解説

_Module は、CComModule またはそれから派生したクラスのグローバル インスタンスを参照します。

LockServer を呼び出すことで、クライアントによるクラス ファクトリの保持が可能となり、複数のオブジェクトが迅速に作成されます。

関連項目

CComObjectRootEx クラス
CComGlobalsThreadModel
クラスの概要