Klasa CComAggObject
Ta klasa implementuje interfejs IUnknown dla zagregowanego obiektu. Według definicji zagregowany obiekt jest zawarty w obiekcie zewnętrznym. Klasa jest podobna CComAggObject
do klasy CComObject, z tą różnicą, że uwidacznia interfejs, który jest bezpośrednio dostępny dla klientów zewnętrznych.
Składnia
template<class contained>
class CComAggObject : public IUnknown,
public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>
Parametry
Zawarte
Klasa, pochodząca z CComObjectRoot lub CComObjectRootEx, a także z innych interfejsów, które mają być obsługiwane w obiekcie.
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CComAggObject::CComAggObject | Konstruktor. |
CComAggObject::~CComAggObject | Destruktora. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CComAggObject::AddRef | Zwiększa liczbę odwołań dla zagregowanego obiektu. |
CComAggObject::CreateInstance | Ta funkcja statyczna umożliwia utworzenie nowego obiektu CComAggObject contained ><bez obciążenia związanego z funkcją CoCreateInstance. |
CComAggObject::FinalConstruct | Wykonuje finalną inicjację elementu m_contained . |
CComAggObject::FinalRelease | Wykonuje ostateczne zniszczenie obiektu m_contained . |
CComAggObject::QueryInterface | Pobiera wskaźnik do żądanego interfejsu. |
CComAggObject::Release | Dekrementuje liczbę odwołań dla zagregowanego obiektu. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CComAggObject::m_contained | Delegaty IUnknown wywołuje do zewnętrznej nieznanej. |
Uwagi
CComAggObject
implementuje element IUnknown dla zagregowanego obiektu. CComAggObject
ma własny IUnknown
interfejs, oddzielony od interfejsu obiektu IUnknown
zewnętrznego i zachowuje własną liczbę odwołań.
Aby uzyskać więcej informacji na temat agregacji, zobacz artykuł Podstawy obiektów COM ATL.
Hierarchia dziedziczenia
CComObjectRootBase
IUnknown
CComAggObject
Wymagania
Nagłówek: atlcom.h
CComAggObject::AddRef
Zwiększa liczbę odwołań dla zagregowanego obiektu.
STDMETHOD_(ULONG, AddRef)();
Wartość zwracana
Wartość, która może być przydatna do diagnostyki lub testowania.
CComAggObject::CComAggObject
Konstruktor.
CComAggObject(void* pv);
Parametry
Pv
[in] Zewnętrzna nieznana.
Uwagi
Inicjuje element członkowski CComContainedObject
, m_contained i zwiększa liczbę blokad modułu.
Destruktor destruktor dekrementuje liczbę blokad modułu.
CComAggObject::~CComAggObject
Destruktora.
~CComAggObject();
Uwagi
Zwalnia wszystkie przydzielone zasoby, wywołuje funkcję FinalRelease i usuwa liczbę blokad modułu.
CComAggObject::CreateInstance
Ta funkcja statyczna umożliwia utworzenie nowego obiektu CComAggObjectcontained
>< bez obciążenia związanego z funkcją CoCreateInstance.
static HRESULT WINAPI CreateInstance(
LPUNKNOWN pUnkOuter,
CComAggObject<contained>** pp);
Parametry
Pp
[out] Wskaźnik do obiektu CComAggObject<zawiera> wskaźnik. Jeśli CreateInstance
nie powiedzie się, wartość pp jest ustawiona na wartość NULL.
Wartość zwracana
Standardowa wartość HRESULT.
Uwagi
Zwrócony obiekt ma liczbę odwołań zero, więc wywołaj AddRef
natychmiast, a następnie użyj polecenia Release
, aby zwolnić odwołanie w wskaźniku obiektu po zakończeniu.
Jeśli nie potrzebujesz bezpośredniego dostępu do obiektu, ale nadal chcesz utworzyć nowy obiekt bez narzutu CoCreateInstance
, zamiast tego użyj klasy CComCoClass::CreateInstance .
CComAggObject::FinalConstruct
Wywoływana podczas ostatnich etapów budowy obiektu ta metoda wykonuje wszelkie finalne inicjowanie na m_contained składowej.
HRESULT FinalConstruct();
Wartość zwracana
Standardowa wartość HRESULT.
CComAggObject::FinalRelease
Wywoływana podczas niszczenia obiektu ta metoda zwalnia składową m_contained .
void FinalRelease();
CComAggObject::m_contained
Obiekt CComContainedObject pochodzący z klasy.
CComContainedObject<contained> m_contained;
Parametry
Zawarte
[in] Klasa, pochodząca z CComObjectRoot lub CComObjectRootEx, a także z innych interfejsów, które mają być obsługiwane w obiekcie.
Uwagi
Wszystkie IUnknown
wywołania są m_contained
delegowane do zewnętrznej nieznanej.
CComAggObject::QueryInterface
Pobiera wskaźnik do żądanego interfejsu.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Parametry
identyfikator iid
[in] Identyfikator żądanego interfejsu.
ppvObject
[out] Wskaźnik do wskaźnika interfejsu zidentyfikowany przez identyfikator iid. Jeśli obiekt nie obsługuje tego interfejsu, obiekt ppvObject ma ustawioną wartość NULL.
Pp
[out] Wskaźnik do wskaźnika interfejsu zidentyfikowany przez typ Q
. Jeśli obiekt nie obsługuje tego interfejsu, parametr pp jest ustawiony na wartość NULL.
Wartość zwracana
Standardowa wartość HRESULT.
Uwagi
Jeśli żądany interfejs to IUnknown
, QueryInterface
zwraca wskaźnik do obiektu zagregowanego i IUnknown
zwiększa liczbę odwołań. W przeciwnym razie ta metoda wykonuje zapytania dotyczące interfejsu za pośrednictwem elementu CComContainedObject
członkowskiego, m_contained.
CComAggObject::Release
Dekrementuje liczbę odwołań dla zagregowanego obiektu.
STDMETHOD_(ULONG, Release)();
Wartość zwracana
W kompilacjach debugowania zwraca wartość, Release
która może być przydatna do diagnostyki lub testowania. W kompilacjach innych niż debugowanie Release
zawsze zwraca wartość 0.
Zobacz też
Klasa CComObject
Klasa CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Omówienie klasy