Partager via


CComAggObject, classe

Cette classe implémente l’interface IUnknown pour un objet agrégé. Par définition, un objet agrégé est contenu dans un objet externe. La CComAggObject classe est similaire à la classe CComObject, sauf qu’elle expose une interface directement accessible aux clients externes.

Syntaxe

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

Paramètres

Contenues
Votre classe, dérivée de CComObjectRoot ou CComObjectRootEx, ainsi que de toutes les autres interfaces que vous souhaitez prendre en charge sur l’objet.

Membres

Constructeurs publics

Nom Description
CComAggObject ::CComAggObject Constructeur .
CComAggObject ::~CComAggObject Destructeur.

Méthodes publiques

Nom Description
CComAggObject ::AddRef Incrémente le nombre de références sur l’objet agrégé.
CComAggObject ::CreateInstance Cette fonction statique vous permet de créer un objet CComAggObject< > contained sans surcharge de CoCreateInstance.
CComAggObject ::FinalConstruct Effectue l’initialisation finale de m_contained.
CComAggObject ::FinalRelease Effectue la destruction finale de m_contained.
CComAggObject ::QueryInterface Récupère un pointeur vers l'interface demandée.
CComAggObject ::Release Décrémente le nombre de références sur l’objet agrégé.

Membres de données publics

Nom Description
CComAggObject ::m_contained Délègue les IUnknown appels à l’inconnu externe.

Notes

CComAggObjectimplémente IUnknown pour un objet agrégé. CComAggObject possède sa propre IUnknown interface, distincte de l’interface de l’objet IUnknown externe et conserve son propre nombre de références.

Pour plus d’informations sur l’agrégation, consultez l’article Principes de base des objets COM ATL.

Hiérarchie d'héritage

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

Spécifications

En-tête : atlcom.h

CComAggObject ::AddRef

Incrémente le nombre de références sur l’objet agrégé.

STDMETHOD_(ULONG, AddRef)();

Valeur de retour

Valeur qui peut être utile pour les diagnostics ou les tests.

CComAggObject ::CComAggObject

Constructeur .

CComAggObject(void* pv);

Paramètres

Pv
[in] L’inconnu extérieur.

Notes

Initialise le CComContainedObject membre, m_contained et incrémente le nombre de verrous du module.

Le destructeur décrémente le nombre de verrous du module.

CComAggObject ::~CComAggObject

Destructeur.

~CComAggObject();

Notes

Libère toutes les ressources allouées, appelle FinalRelease et décrémente le nombre de verrous du module.

CComAggObject ::CreateInstance

Cette fonction statique vous permet de créer un objet CComAggObject<>contained sans surcharge de CoCreateInstance.

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

Paramètres

pp
[out] Pointeur vers un pointeur contenu> CComAggObject<. En CreateInstance cas d’échec, pp a la valeur NULL.

Valeur de retour

Valeur HRESULT standard.

Notes

L’objet retourné a un nombre de références égal à zéro. Appelez AddRef donc immédiatement, puis utilisez Release pour libérer la référence sur le pointeur de l’objet lorsque vous avez terminé.

Si vous n’avez pas besoin d’un accès direct à l’objet, mais que vous souhaitez toujours créer un objet sans surcharge CoCreateInstance, utilisez CComCoClass ::CreateInstance à la place.

CComAggObject ::FinalConstruct

Appelée au cours des dernières étapes de la construction d’objet, cette méthode effectue toute initialisation finale sur le membre m_contained .

HRESULT FinalConstruct();

Valeur de retour

Valeur HRESULT standard.

CComAggObject ::FinalRelease

Appelée lors de la destruction d’objets, cette méthode libère le membre m_contained .

void FinalRelease();

CComAggObject ::m_contained

Objet CComContainedObject dérivé de votre classe.

CComContainedObject<contained> m_contained;

Paramètres

Contenues
[in] Votre classe, dérivée de CComObjectRoot ou CComObjectRootEx, ainsi que de toutes les autres interfaces que vous souhaitez prendre en charge sur l’objet.

Notes

Tous les IUnknown appels sont m_contained délégués à l’inconnu externe.

CComAggObject ::QueryInterface

Récupère un pointeur vers l'interface demandée.

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

Paramètres

iid
[in] Identificateur de l'interface demandée.

ppvObject
[out] Pointeur vers le pointeur d’interface identifié par iid. Si l’objet ne prend pas en charge cette interface, ppvObject a la valeur NULL.

pp
[out] Pointeur vers le pointeur d’interface identifié par type Q. Si l’objet ne prend pas en charge cette interface, pp a la valeur NULL.

Valeur de retour

Valeur HRESULT standard.

Notes

Si l’interface demandée est IUnknown, QueryInterface retourne un pointeur vers les propres IUnknown objets agrégés et incrémente le nombre de références. Sinon, cette méthode interroge l’interface via le CComContainedObject membre, m_contained.

CComAggObject ::Release

Décrémente le nombre de références sur l’objet agrégé.

STDMETHOD_(ULONG, Release)();

Valeur de retour

Dans les builds de débogage, Release retourne une valeur qui peut être utile pour les diagnostics ou les tests. Dans les builds non debug, Release retourne toujours 0.

Voir aussi

CComObject, classe
CComPolyObject, classe
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Vue d’ensemble de la classe