CComClassFactory クラス
更新 : 2007 年 11 月
このクラスは、IClassFactory インターフェイスを実装します。
class CComClassFactory : public IClassFactory,
public CComObjectRootEx< CComGlobalsThreadModel >
解説
CComClassFactory は IClassFactory インターフェイスを実装します。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 をオブジェクトの既定のクラス ファクトリとして使用するように指定しています。CMyClassFactory は CComClassFactory から派生させる必要があります。また、CreateInstance をオーバーライドする必要もあります。
このほかにも、ATL (Active Template Library) にはクラス ファクトリを宣言するマクロとして、次の 3 つのマクロがあります。
DECLARE_CLASSFACTORY2 CComClassFactory2 を使用します。このクラスは、オブジェクトの作成をライセンスによって制御します。
DECLARE_CLASSFACTORY_AUTO_THREAD CComClassFactoryAutoThread を使用します。このクラスは、アパートメント モデルのマルチスレッドでオブジェクトを作成します。
DECLARE_CLASSFACTORY_SINGLETON CComClassFactorySingleton を使用します。このクラスは、単一の CComObjectGlobal オブジェクトを生成します。
必要条件
ヘッダー : atlcom.h