CComClassFactorySingleton クラス
このクラスは、CComClassFactory から派生し、CComObjectGlobal を使用して 1 つのオブジェクトを構築します。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
template<class T>
class CComClassFactorySingleton : public CComClassFactory
パラメーター
T
クラス。
CComClassFactorySingleton
は、CComClassFactory から派生し、CComObjectGlobal を使用して 1 つのオブジェクトを構築します。 CreateInstance
メソッドを呼び出すたびに、このオブジェクトに対してインターフェイス ポインターのクエリが実行されるだけです。
メンバー
パブリック メソッド
名前 | 説明 |
---|---|
CComClassFactorySingleton::CreateInstance | m_spObj をクエリし、インターフェイス ポインターを取得します。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CComClassFactorySingleton::m_spObj | CComClassFactorySingleton で構築された CComObjectGlobal オブジェクト。 |
解説
通常、ATL オブジェクトは、クラス ファクトリを CComCoClass から派生させて取得します。 このクラスには、CComClassFactory
を既定のクラス ファクトリとして宣言する DECLARE_CLASSFACTORY マクロが含まれます。 CComClassFactorySingleton
を使用するには、オブジェクトのクラス定義で DECLARE_CLASSFACTORY_SINGLETON マクロを指定します。 次に例を示します。
class ATL_NO_VTABLE CMySingletonClass :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMySingletonClass, &CLSID_MySingletonClass>,
public IMySingletonClass
{
public:
DECLARE_CLASSFACTORY_SINGLETON(CMySingletonClass)
// Remainder of class declaration omitted.
継承階層
CComObjectRootBase
IClassFactory
CComClassFactorySingleton
要件
ヘッダー: atlcom.h
CComClassFactorySingleton::CreateInstance
m_spObj を使用して QueryInterface
を呼び出し、インターフェイス ポインターを取得します。
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
パラメーター
pUnkOuter
[in] オブジェクトを集計の一部として作成中の場合、pUnkOuter は外部の不明な値である必要があります。 それ以外の場合、pUnkOuter は NULL である必要があります。
riid
[入力] 要求された インターフェイスの IID。 pUnkOuter が NULL 以外の場合、riid は IID_IUnknown
である必要があります。
ppvObj
[出力] riid によって識別されるインターフェイス ポインターへのポインター。 オブジェクトがこのインターフェイスをサポートしていない場合、ppvObj は NULL に設定されます。
戻り値
標準の HRESULT 値。
CComClassFactorySingleton::m_spObj
CComClassFactorySingleton
で構築された CComObjectGlobal オブジェクト。
CComPtr<IUnknown> m_spObj;
解説
CreateInstance メソッドが呼び出されるたびに、インターフェイス ポインターを取得するために単純にこのオブジェクトがクエリされます。
なお、現在の m_spObj
の形式には、以前のバージョンの ATL の CComClassFactorySingleton
の動作と、互換性に影響する変更があります。 以前のバージョンで CComClassFactorySingleton
オブジェクトは、サーバーの初期化時に、クラス ファクトリと同時に作成されていました。 Visual C++ .NET 2003 以降では、オブジェクトは遅れて、最初の要求で作成されます。 この変更により、初期の初期化に依存するプログラムでエラーが発生する可能性があります。
関連項目
IClassFactory
CComClassFactory2 クラス
CComClassFactoryAutoThread クラス
CComObjectRootEx クラス
CComGlobalsThreadModel
クラスの概要