Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Diese Klasse implementiert die IUnknown-Schnittstelle für ein aggregiertes Objekt. Standardmäßig ist ein aggregiertes Objekt in einem äußeren Objekt enthalten. Die CComAggObject Klasse ähnelt der CComObject-Klasse, mit der Ausnahme, dass sie eine Schnittstelle verfügbar macht, auf die direkt auf externe Clients zugegriffen werden kann.
Syntax
template<class contained>
class CComAggObject : public IUnknown,
public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>
Parameter
enthalten
Ihre Von CComObjectRoot oder CComObjectRootEx abgeleitete Klasse sowie alle anderen Schnittstellen, die Sie für das Objekt unterstützen möchten.
Member
Öffentliche Konstruktoren
| Name | Beschreibung |
|---|---|
| CComAggObject::CComAggObject | Der Konstruktor. |
| CComAggObject::~CComAggObject | Der Destruktor. |
Öffentliche Methoden
| Name | Beschreibung |
|---|---|
| CComAggObject::AddRef | Erhöht die Verweisanzahl für das aggregierte Objekt. |
| CComAggObject::CreateInstance | Mit dieser statischen Funktion können Sie ein neues CComAggObject-Objekt contained ><ohne den Aufwand von CoCreateInstance erstellen. |
| CComAggObject::FinalConstruct | Führt die endgültige Initialisierung von m_contained. |
| CComAggObject::FinalRelease | Führt die endgültige Zerstörung von m_contained. |
| CComAggObject::QueryInterface | Ruft einen Zeiger auf die angeforderte Schnittstelle ab. |
| CComAggObject::Release | Erhöht die Verweisanzahl für das aggregierte Objekt. |
Öffentliche Datenmember
| Name | Beschreibung |
|---|---|
| CComAggObject::m_contained | Delegiert Aufrufe IUnknown an das äußere Unbekannte. |
Hinweise
CComAggObjectimplementiert IUnknown für ein aggregiertes Objekt. CComAggObject verfügt über eine eigene IUnknown Schnittstelle, getrennt von der Schnittstelle des IUnknown äußeren Objekts und verwaltet die eigene Referenzanzahl.
Weitere Informationen zur Aggregation finden Sie im Artikel Grundlagen von ATL COM-Objekten.
Vererbungshierarchie
CComObjectRootBase
IUnknown
CComAggObject
Anforderungen
Kopfzeile: atlcom.h
CComAggObject::AddRef
Erhöht die Verweisanzahl für das aggregierte Objekt.
STDMETHOD_(ULONG, AddRef)();
Rückgabewert
Ein Wert, der für Diagnosen oder Tests nützlich sein kann.
CComAggObject::CComAggObject
Der Konstruktor.
CComAggObject(void* pv);
Parameter
Pv
[in] Das äußere Unbekannte.
Hinweise
Initialisiert das CComContainedObject Element, m_contained und erhöht die Anzahl der Modulsperren.
Der Destruktor erhöht die Anzahl der Modulsperren.
CComAggObject::~CComAggObject
Der Destruktor.
~CComAggObject();
Hinweise
Gibt alle zugeordneten Ressourcen frei, ruft FinalRelease auf und erhöht die Modulsperranzahl.
CComAggObject::CreateInstance
Mit dieser statischen Funktion können Sie ein neues CComAggObject-Objektcontained>< ohne den Aufwand von CoCreateInstance erstellen.
static HRESULT WINAPI CreateInstance(
LPUNKNOWN pUnkOuter,
CComAggObject<contained>** pp);
Parameter
PP
[out] Ein Zeiger auf ein CComAggObject<enthaltener> Zeiger. Wenn CreateInstance dies nicht erfolgreich ist, wird pp auf NULL festgelegt.
Rückgabewert
Ein HRESULT-Standardwert.
Hinweise
Das zurückgegebene Objekt weist eine Bezugsanzahl von Null auf. Rufen Sie also sofort auf AddRef , um Release den Verweis auf den Objektzeiger freizugeben, wenn Sie fertig sind.
Wenn Sie keinen direkten Zugriff auf das Objekt benötigen, aber dennoch ein neues Objekt erstellen möchten, ohne den Aufwand CoCreateInstancezu haben, verwenden Sie stattdessen CComCoClass::CreateInstance .
CComAggObject::FinalConstruct
Diese Methode wird während der letzten Phasen der Objektkonstruktion aufgerufen und führt alle endgültigen Initialisierungen für das m_contained-Element durch.
HRESULT FinalConstruct();
Rückgabewert
Ein HRESULT-Standardwert.
CComAggObject::FinalRelease
Diese Methode wird während der Objektvernichtung aufgerufen und gibt das m_contained Element frei.
void FinalRelease();
CComAggObject::m_contained
Ein von Ihrer Klasse abgeleitetes CComContainedObject-Objekt .
CComContainedObject<contained> m_contained;
Parameter
enthalten
[in] Ihre Von CComObjectRoot oder CComObjectRootEx abgeleitete Klasse sowie alle anderen Schnittstellen, die Sie für das Objekt unterstützen möchten.
Hinweise
Alle IUnknown Aufrufe m_contained werden an das äußere Unbekannte delegiert.
CComAggObject::QueryInterface
Ruft einen Zeiger auf die angeforderte Schnittstelle ab.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Parameter
iid
[in] Der Bezeichner der angeforderten Schnittstelle.
ppvObject
[out] Ein Zeiger auf den Schnittstellenzeiger, der durch iid identifiziert wird. Wenn das Objekt diese Schnittstelle nicht unterstützt, wird ppvObject auf NULL festgelegt.
PP
[out] Ein Zeiger auf den Schnittstellenzeiger, der vom Typ Qidentifiziert wird. Wenn das Objekt diese Schnittstelle nicht unterstützt, wird pp auf NULL festgelegt.
Rückgabewert
Ein HRESULT-Standardwert.
Hinweise
Wenn die angeforderte Schnittstelle lautet IUnknown, QueryInterface wird ein Zeiger auf das eigene IUnknown aggregierte Objekt zurückgegeben und die Referenzanzahl erhöht. Andernfalls fragt diese Methode die Schnittstelle über das CComContainedObject Element m_contained ab.
CComAggObject::Release
Erhöht die Verweisanzahl für das aggregierte Objekt.
STDMETHOD_(ULONG, Release)();
Rückgabewert
Gibt in Debugbuilds einen Wert zurück, Release der für Diagnosen oder Tests nützlich sein kann. Gibt in Nicht-Debug-Builds Release immer "0" zurück.
Siehe auch
CComObject-Klasse
CComPolyObject-Klasse
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Klassenübersicht