CComClassFactorySingleton 类

此类派生自 CComClassFactory,并使用 CComObjectGlobal 构造单个对象。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

template<class T>
class CComClassFactorySingleton : public CComClassFactory

参数

T
你的类。

CComClassFactorySingleton 派生自 CComClassFactory,并使用 CComObjectGlobal 构造单个对象。 每次调用 CreateInstance 方法只需查询此对象以获取接口指针。

成员

公共方法

名称 描述
CComClassFactorySingleton::CreateInstance 对接口指针的查询 m_spObj

公共数据成员

“属性” 描述
CComClassFactorySingleton::m_spObj CComClassFactorySingleton 构造的 CComObjectGlobal 对象。

注解

ATL 对象通常通过从 CComCoClass 派生来获取类工厂。 此类包括宏 DECLARE_CLASSFACTORY,该宏将 CComClassFactory 声明为默认类工厂。 若要使用 CComClassFactorySingleton,请在对象的类定义中指定 DECLARE_CLASSFACTORY_AUTO_THREAD 宏。 例如:

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

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

要求

标头:atlcom.h

CComClassFactorySingleton::CreateInstance

通过 m_spObj 调用 QueryInterface 来检索接口指针。

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

参数

pUnkOuter
[in] 如果要创建聚合中的对象,pUnkOuter 必须是外部未知参数。 否则,pUnkOuter 必须为 NULL。

riid
[in] 请求的 接口的 IID。 如果 pUnkOuter 为非 NULL,riid 必须是 IID_IUnknown

ppvObj
[out] 指向 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
类概述