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
CComAggObject
implé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
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