CComAggObject – třída

Poznámka:

Knihovna ATL (Active Template Library) se nadále podporuje. Už ale nepřidáme funkce ani aktualizujeme dokumentaci.

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 CComAggObject <contained>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