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_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
[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
類別概觀