Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 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