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
IClassFactory
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
类概述