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
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 CoCreateInstance
ná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 IUnknown
pož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