Condividi tramite


Classe CComAggObject

Questa classe implementa l'interfaccia IUnknown per un oggetto aggregato. Per definizione, un oggetto aggregato è contenuto all'interno di un oggetto esterno. La CComAggObject classe è simile alla classe CComObject, ad eccezione del fatto che espone un'interfaccia direttamente accessibile ai client esterni.

Sintassi

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

Parametri

contenuto
La classe, derivata da CComObjectRoot o CComObjectRootEx, nonché da qualsiasi altra interfaccia che si vuole supportare sull'oggetto.

Membri

Costruttori pubblici

Nome Descrizione
CComAggObject::CComAggObject Costruttore.
CComAggObject::~CComAggObject Distruttore.

Metodi pubblici

Nome Descrizione
CComAggObject::AddRef Incrementa il conteggio dei riferimenti sull'oggetto aggregato.
CComAggObject::CreateInstance Questa funzione statica consente di creare un nuovo oggetto CComAggObject contained ><senza l'overhead di CoCreateInstance.
CComAggObject::FinalConstruct Esegue l'inizializzazione finale di m_contained.
CComAggObject::FinalRelease Esegue la distruzione finale di m_contained.
CComAggObject::QueryInterface Recupera un puntatore all'interfaccia richiesta.
CComAggObject::Release Decrementa il conteggio dei riferimenti sull'oggetto aggregato.

Membri dati pubblici

Nome Descrizione
CComAggObject::m_contained IUnknown Delegati chiamano all'oggetto sconosciuto esterno.

Osservazioni:

CComAggObject implementa IUnknown per un oggetto aggregato. CComAggObject ha una propria IUnknown interfaccia, separata dall'interfaccia dell'oggetto IUnknown esterno e mantiene il proprio conteggio dei riferimenti.

Per altre informazioni sull'aggregazione, vedere l'articolo Nozioni fondamentali sugli oggetti COM ATL.

Gerarchia di ereditarietà

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

Requisiti

Intestazione: atlcom.h

CComAggObject::AddRef

Incrementa il conteggio dei riferimenti sull'oggetto aggregato.

STDMETHOD_(ULONG, AddRef)();

Valore restituito

Valore che può essere utile per la diagnostica o il test.

CComAggObject::CComAggObject

Costruttore.

CComAggObject(void* pv);

Parametri

Pv
[in] Sconosciuto esterno.

Osservazioni:

Inizializza il CComContainedObject membro, m_contained e incrementa il conteggio dei blocchi del modulo.

Il distruttore decrementa il conteggio dei blocchi del modulo.

CComAggObject::~CComAggObject

Distruttore.

~CComAggObject();

Osservazioni:

Libera tutte le risorse allocate, chiama FinalRelease e decrementa il conteggio dei blocchi del modulo.

CComAggObject::CreateInstance

Questa funzione statica consente di creare un nuovo oggetto CComAggObjectcontained>< senza l'overhead di CoCreateInstance.

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

Parametri

Pp
[out] Puntatore a un puntatore contenuto> CComAggObject<. Se CreateInstance ha esito negativo, pp è impostato su NULL.

Valore restituito

Valore HRESULT standard.

Osservazioni:

L'oggetto restituito ha un conteggio dei riferimenti pari a zero, quindi chiamare AddRef immediatamente, quindi usare Release per liberare il riferimento sul puntatore all'oggetto al termine.

Se non è necessario l'accesso diretto all'oggetto, ma si vuole comunque creare un nuovo oggetto senza sovraccarico di CoCreateInstance, usare invece CComCoClass::CreateInstance .

CComAggObject::FinalConstruct

Chiamato durante le fasi finali della costruzione di oggetti, questo metodo esegue qualsiasi inizializzazione finale sul membro m_contained .

HRESULT FinalConstruct();

Valore restituito

Valore HRESULT standard.

CComAggObject::FinalRelease

Chiamato durante la distruzione dell'oggetto, questo metodo libera il membro m_contained .

void FinalRelease();

CComAggObject::m_contained

Oggetto CComContainedObject derivato dalla classe.

CComContainedObject<contained> m_contained;

Parametri

contenuto
[in] La classe, derivata da CComObjectRoot o CComObjectRootEx, nonché da qualsiasi altra interfaccia che si vuole supportare sull'oggetto.

Osservazioni:

Tutte le IUnknown chiamate tramite m_contained vengono delegate all'elemento sconosciuto esterno.

CComAggObject::QueryInterface

Recupera un puntatore all'interfaccia richiesta.

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

Parametri

iid
[in] Identificatore dell'interfaccia richiesta.

ppvObject
[out] Puntatore al puntatore dell'interfaccia identificato da iid. Se l'oggetto non supporta questa interfaccia, ppvObject è impostato su NULL.

Pp
[out] Puntatore al puntatore dell'interfaccia identificato dal tipo Q. Se l'oggetto non supporta questa interfaccia, pp è impostato su NULL.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Se l'interfaccia richiesta è IUnknown, QueryInterface restituisce un puntatore al proprio IUnknown oggetto aggregato e incrementa il conteggio dei riferimenti. In caso contrario, questo metodo esegue una query per l'interfaccia tramite il CComContainedObject membro m_contained.

CComAggObject::Release

Decrementa il conteggio dei riferimenti sull'oggetto aggregato.

STDMETHOD_(ULONG, Release)();

Valore restituito

Nelle compilazioni di debug restituisce Release un valore che può essere utile per la diagnostica o il test. Nelle compilazioni non di debug restituisce Release sempre 0.

Vedi anche

Classe CComObject
Classe CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Cenni preliminari sulla classe