Sdílet prostřednictvím


CComAggObject – třída

Tato třída implementuje IUnknown rozhraní pro agregovaný objekt. Podle definice je agregovaný objekt obsažen uvnitř vnějšího objektu. Třída CComAggObject je podobná CComObject Class s tím rozdílem, že zveřejňuje rozhraní, které je přímo přístupné pro externí klienty.

Syntaxe

template<class contained>
class CComAggObject : public IUnknown,
   public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>

Parametry

obsahoval
Třída odvozená z CComObjectRoot nebo CComObjectRootEx, stejně jako z jakéhokoli jiného rozhraní, které chcete podporovat u objektu.

Členové

Veřejné konstruktory

Název Popis
CComAggObject::CComAggObject Konstruktor
CComAggObject::~CComAggObject Destruktor.

Veřejné metody

Název Popis
CComAggObject::AddRef Zvýší počet odkazů na agregovaný objekt.
CComAggObject::CreateInstance Tato statická funkce umožňuje vytvořit nový objekt CComAggObject contained ><bez režie NaCreateInstance.
CComAggObject::FinalConstruct Provede konečnou inicializaci .m_contained
CComAggObject::FinalRelease Provádí konečné zničení m_contained.
CComAggObject::QueryInterface Načte ukazatel na požadované rozhraní.
CComAggObject::Release Sníží počet odkazů na agregovaný objekt.

Veřejné datové členy

Název Popis
CComAggObject::m_contained Delegáti IUnknown volání na vnější neznámé.

Poznámky

CComAggObject implementuje IUnknown pro agregovaný objekt. CComAggObject má vlastní IUnknown rozhraní oddělené od rozhraní vnějšího objektu IUnknown a udržuje svůj vlastní referenční počet.

Další informace o agregaci najdete v článku Základy objektů MODELU COM ATL.

Hierarchie dědičnosti

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

Požadavky

Hlavička: atlcom.h

CComAggObject::AddRef

Zvýší počet odkazů na agregovaný objekt.

STDMETHOD_(ULONG, AddRef)();

Návratová hodnota

Hodnota, která může být užitečná pro diagnostiku nebo testování.

CComAggObject::CComAggObject

Konstruktor

CComAggObject(void* pv);

Parametry

Pv
[v] Vnější neznámý.

Poznámky

Inicializuje CComContainedObject člen, m_contained a zvýší počet zámků modulu.

Destruktor dekrementuje počet zámků modulu.

CComAggObject::~CComAggObject

Destruktor.

~CComAggObject();

Poznámky

Uvolní všechny přidělené prostředky, zavolá FinalRelease a sníží počet zámků modulu.

CComAggObject::CreateInstance

Tato statická funkce umožňuje vytvořit nový objekt CComAggObjectcontained>< bez režie NaCreateInstance.

static HRESULT WINAPI CreateInstance(
    LPUNKNOWN pUnkOuter,
    CComAggObject<contained>** pp);

Parametry

Pp
[ven] Ukazatel na CComAggObject<obsahoval> ukazatel. Pokud CreateInstance je neúspěšný, hodnota pp je nastavena na hodnotu NULL.

Návratová hodnota

Standardní hodnota HRESULT.

Poznámky

Vrácený objekt má počet odkazů na nulu, takže volání AddRef okamžitě použijte Release k uvolnění odkazu na ukazatel objektu, jakmile budete hotovi.

Pokud nepotřebujete přímý přístup k objektu, ale přesto chcete vytvořit nový objekt bez režijních CoCreateInstancenákladů , použijte místo toho CComCoClass::CreateInstance .

CComAggObject::FinalConstruct

Volá se během konečných fází konstrukce objektu, tato metoda provádí všechny konečné inicializace na m_contained členu.

HRESULT FinalConstruct();

Návratová hodnota

Standardní hodnota HRESULT.

CComAggObject::FinalRelease

Volá se při zničení objektu , tato metoda uvolní m_contained člena.

void FinalRelease();

CComAggObject::m_contained

A CComContainedObject objekt odvozený z vaší třídy.

CComContainedObject<contained> m_contained;

Parametry

obsahoval
[v] Třída odvozená z CComObjectRoot nebo CComObjectRootEx, stejně jako z jakéhokoli jiného rozhraní, které chcete podporovat u objektu.

Poznámky

Všechna IUnknown volání se m_contained delegují na vnější neznámé.

CComAggObject::QueryInterface

Načte ukazatel na požadované rozhraní.

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);

Parametry

iid
[v] Identifikátor požadovaného rozhraní.

ppvObject
[ven] Ukazatel na ukazatel rozhraní identifikovaný pomocí iid. Pokud objekt nepodporuje toto rozhraní, ppvObject je nastaven na HODNOTU NULL.

Pp
[ven] Ukazatel na ukazatel rozhraní identifikovaný podle typu Q. Pokud objekt nepodporuje toto rozhraní, pp je nastavena na HODNOTU NULL.

Návratová hodnota

Standardní hodnota HRESULT.

Poznámky

Pokud je IUnknownpožadované rozhraní , QueryInterface vrátí ukazatel na vlastní IUnknown agregovaný objekt a zvýší počet odkazů. V opačném případě se tato metoda dotazuje na rozhraní prostřednictvím člena CComContainedObject m_contained.

CComAggObject::Release

Sníží počet odkazů na agregovaný objekt.

STDMETHOD_(ULONG, Release)();

Návratová hodnota

V buildech ladění vrátí hodnotu, Release která může být užitečná pro diagnostiku nebo testování. V neladit sestavení vždy Release vrátí hodnotu 0.

Viz také

CComObject – třída
CComPolyObject – třída
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Přehled třídy