Udostępnij za pośrednictwem


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.

Członkowie

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 CComAggObjectcontained>< 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

Ccomobjectrootex

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

S
[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

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.

S
[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