CComClassFactory クラス
このクラスは、IClassFactory インターフェイスを実装します。
class CComClassFactory : public IClassFactory,
public CComObjectRootEx< CComGlobalsThreadModel >
メンバー
パブリック メソッド
名前 |
説明 |
---|---|
指定の CLSID を持つオブジェクトを作成します。 |
|
メモリのクラス ファクトリをロックします。 |
解説
CComClassFactory は、特定の CLSID のオブジェクトを作成するメソッドをロックして、アセンブリに加え、新しいオブジェクトがより迅速に作成するためにメモリのクラス ファクトリを IClassFactory のインターフェイスを実装します。IClassFactory は、システム レジストリに登録し、クラスに CLSID に割り当てるかに実装する必要があります。
ATL オブジェクトは CComCoClassから派生させて、通常はクラス ファクトリを取得します。既定のクラス ファクトリとして CComClassFactory を宣言するこのクラスでは、マクロ DECLARE_CLASSFACTORYが含まれています。既定の名前をオーバーライドするには、クラス定義で 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 は、クラス ファクトリを宣言する 3 つが他のマクロが用意されています:
DECLARE_CLASSFACTORY2 は CComClassFactory2を使用して、ライセンスを通じて作成を制御できます。
DECLARE_CLASSFACTORY_AUTO_THREAD は CComClassFactoryAutoThreadを使用して、複数のアパートメントのオブジェクトを作成します。
DECLARE_CLASSFACTORY_SINGLETON は CComClassFactorySingletonを使用して、CComObjectGlobal の単一のオブジェクトを生成します。
必要条件
ヘッダー : atlcom.h