Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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