CComAggObject 類別
這個類別會實作 匯總物件的 IUnknown 介面。 根據定義,匯總的物件包含在外部物件內。 類別 CComAggObject
類似於 CComObject 類別,不同之處在於它會公開可直接存取外部用戶端的介面。
語法
template<class contained>
class CComAggObject : public IUnknown,
public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>
參數
包含
您的類別衍生自 CComObjectRoot 或 CComObjectRootEx,以及您想要在 物件上支援的任何其他介面。
成員
公用建構函式
名稱 | 描述 |
---|---|
CComAggObject::CComAggObject | 建構函式。 |
CComAggObject::~CComAggObject | 解構函式。 |
公用方法
名稱 | 描述 |
---|---|
CComAggObject::AddRef | 遞增匯總物件上的參考計數。 |
CComAggObject::CreateInstance | 此靜態函式可讓您建立新的 CComAggObject contained <>物件,而不需要 CoCreateInstance 的額外負荷。 |
CComAggObject::FinalConstruct | 執行的最終初始化 m_contained 。 |
CComAggObject::FinalRelease | 執行的最終解構 m_contained 。 |
CComAggObject::QueryInterface | 擷取所要求介面的指標。 |
CComAggObject::Release | 遞減匯總物件上的參考計數。 |
公用資料成員
名稱 | 描述 |
---|---|
CComAggObject::m_contained | 委派 IUnknown 對外部未知的呼叫。 |
備註
CComAggObject
會 實作匯總物件的 IUnknown 。 CComAggObject
IUnknown
有自己的介面,與外部物件的IUnknown
介面分開,並維護自己的參考計數。
如需匯總的詳細資訊,請參閱 ATL COM 物件的基本概念一文。
繼承階層架構
CComObjectRootBase
IUnknown
CComAggObject
需求
標頭: atlcom.h
CComAggObject::AddRef
遞增匯總物件上的參考計數。
STDMETHOD_(ULONG, AddRef)();
傳回值
對於診斷或測試而言可能很有用的值。
CComAggObject::CComAggObject
建構函式。
CComAggObject(void* pv);
參數
光伏
[in]外部未知。
備註
CComContainedObject
初始化成員、m_contained,並遞增模組鎖定計數。
解構函式會遞減模組鎖定計數。
CComAggObject::~CComAggObject
解構函式。
~CComAggObject();
備註
釋放所有已配置的資源、呼叫 FinalRelease,並遞減模組鎖定計數。
CComAggObject::CreateInstance
此靜態函式可讓您建立新的 CComAggObjectcontained
<> 物件,而不需要 CoCreateInstance 的額外負荷。
static HRESULT WINAPI CreateInstance(
LPUNKNOWN pUnkOuter,
CComAggObject<contained>** pp);
參數
pp
[out]CComAggObject<包含>指標的指標。 如果 CreateInstance
失敗, pp 會設定為 NULL。
傳回值
標準 HRESULT 值。
備註
傳回的物件具有零的參考計數,因此立即呼叫 AddRef
,然後在完成時,使用 Release
釋放對象指標上的參考。
如果您不需要直接存取物件,但仍想要建立沒有 額外負荷 CoCreateInstance
的新物件,請改用 CComCoClass::CreateInstance 。
CComAggObject::FinalConstruct
在物件建構的最後階段呼叫,此方法會在m_contained成員上執行任何最終初始化。
HRESULT FinalConstruct();
傳回值
標準 HRESULT 值。
CComAggObject::FinalRelease
在對象解構期間呼叫,此方法會 釋放m_contained 成員。
void FinalRelease();
CComAggObject::m_contained
衍生 自類別的 CComContainedObject 物件。
CComContainedObject<contained> m_contained;
參數
包含
[in]您的類別衍生自 CComObjectRoot 或 CComObjectRootEx,以及您想要在 物件上支援的任何其他介面。
備註
透過的所有 IUnknown
呼叫 m_contained
都會委派給外部未知的 。
CComAggObject::QueryInterface
擷取所要求介面的指標。
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
參數
iid
[in] 所要求介面的識別碼。
ppvObject
[out]由 iid 識別之介面指標的指標。 如果物件不支持這個介面, ppvObject 會設定為 NULL。
pp
[out]型別 Q
所識別之介面指標的指標。 如果物件不支持這個介面, pp 會設定為 NULL。
傳回值
標準 HRESULT 值。
備註
如果要求的介面為 IUnknown
, QueryInterface
則會傳回匯總物件本身 IUnknown
的指標,並遞增參考計數。 否則,這個方法會透過 CComContainedObject
成員查詢 介面, m_contained。
CComAggObject::Release
遞減匯總物件上的參考計數。
STDMETHOD_(ULONG, Release)();
傳回值
在偵錯組建中, Release
傳回可能對診斷或測試很有用的值。 在非偵錯組建中, Release
一律會傳回 0。
另請參閱
CComObject 類別
CComPolyObject 類別
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
類別概觀