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
類別概觀
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應