IDispEventImpl, classe

Cette classe fournit des implémentations des IDispatch méthodes.

Important

Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.

Syntaxe

template <UINT nID, class T,
    const IID* pdiid = &IID_NULL,
    const GUID* plibid = &GUID_NULL,
    WORD wMajor = 0,
    WORD wMinor = 0,
    class tihclass = CcomTypeInfoHolder>
class ATL_NO_VTABLE IDispEventImpl : public IDispEventSimpleImpl<nID, T, pdiid>

Paramètres

nID
Identificateur unique de l’objet source. Quand IDispEventImpl est la classe de base d’un contrôle composite, utilisez l’ID de ressource du contrôle contenu souhaité pour ce paramètre. Dans d’autres cas, utilisez un entier positif arbitraire.

T
Classe de l’utilisateur, dérivée de IDispEventImpl.

pdiid
Pointeur vers l’IID de la dispinterface d’événement implémentée par cette classe. Cette interface doit être définie dans la bibliothèque de types indiquée par plibid, wMajor et wMinor.

plibid
Pointeur vers la bibliothèque de types qui définit l’interface de répartition pointée par pdiid. Si &GUID_NULL, la bibliothèque de types est chargée à partir de l’objet qui approvisionne les événements.

wMajor
Version principale de la bibliothèque de types. La valeur par défaut est 0.

wMinor
Version secondaire de la bibliothèque de types. La valeur par défaut est 0.

tihclass
Classe utilisée pour gérer les informations de type pour T. La valeur par défaut est une classe de type CComTypeInfoHolder; toutefois, vous pouvez remplacer ce paramètre de modèle en fournissant une classe d’un type autre que CComTypeInfoHolder.

Membres

Typedefs publics

Nom Description
IDispEventImpl ::_tihclass Classe utilisée pour gérer les informations de type. Par défaut, CComTypeInfoHolder.

Constructeurs publics

Nom Description
IDispEventImpl ::IDispEventImpl Constructeur .

Méthodes publiques

Nom Description
IDispEventImpl ::GetFuncInfoFromId Localise l’index de fonction pour l’identificateur de répartition spécifié.
IDispEventImpl ::GetIDsOfNames Mappe un seul membre et un ensemble facultatif de noms d’arguments à un ensemble d’entiers DISPID correspondants.
IDispEventImpl ::GetTypeInfo Récupère les informations de type d’un objet.
IDispEventImpl ::GetTypeInfoCount Récupère le nombre d’interfaces d’informations de type.
IDispEventImpl ::GetUserDefinedType Récupère le type de base d’un type défini par l’utilisateur.

Notes

IDispEventImpl fournit un moyen d’implémenter une dispinterface d’événement sans vous obliger à fournir du code d’implémentation pour chaque méthode/événement sur cette interface. IDispEventImpl fournit des implémentations des IDispatch méthodes. Vous devez uniquement fournir des implémentations pour les événements qui vous intéressent à la gestion.

IDispEventImpl fonctionne conjointement avec le mappage récepteur d’événements dans votre classe pour router les événements vers la fonction de gestionnaire appropriée. Pour utiliser cette classe :

Ajoutez une macro SINK_ENTRY ou SINK_ENTRY_EX à la carte du récepteur d’événements pour chaque événement sur chaque objet que vous souhaitez gérer. Lorsque vous utilisez IDispEventImpl une classe de base d’un contrôle composite, vous pouvez appeler AtlAdviseSinkMap pour établir et rompre la connexion avec les sources d’événements pour toutes les entrées du mappage récepteur d’événements. Dans d’autres cas, ou pour un contrôle supérieur, appelez DispEventAdvise pour établir la connexion entre l’objet source et la classe de base. Appelez DispEventUnadvise pour interrompre la connexion.

Vous devez dériver (à l’aide IDispEventImpl d’une valeur unique pour nID) pour chaque objet pour lequel vous devez gérer les événements. Vous pouvez réutiliser la classe de base en désadvisant un objet source, puis en conseillant sur un autre objet source, mais le nombre maximal d’objets sources pouvant être gérés par un seul objet à la fois est limité par le nombre de classes de IDispEventImpl base.

IDispEventImpl fournit la même fonctionnalité que IDispEventSimpleImpl, sauf qu’elle obtient des informations de type sur l’interface à partir d’une bibliothèque de types plutôt que de l’avoir fournie en tant que pointeur vers une structure _ATL_FUNC_INFO . Utilisez IDispEventSimpleImpl quand vous n’avez pas de bibliothèque de types décrivant l’interface d’événement ou que vous souhaitez éviter la surcharge associée à l’utilisation de la bibliothèque de types.

Remarque

IDispEventImpl et IDispEventSimpleImpl fournissez leur propre implémentation permettant IUnknown::QueryInterface à chaque IDispEventImpl classe de base d’agir IDispEventSimpleImpl en tant qu’identité COM distincte tout en autorisant l’accès direct aux membres de classe dans votre objet COM principal.

L’implémentation CE ATL des récepteurs d’événements ActiveX prend uniquement en charge les valeurs de retour de type HRESULT ou void de vos méthodes de gestionnaire d’événements ; toute autre valeur de retour n’est pas prise en charge et son comportement n’est pas défini.

Pour plus d’informations, consultez Prise en charge d’IDispEventImpl.

Hiérarchie d'héritage

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpleImpl

IDispEventImpl

Spécifications

En-tête : atlcom.h

IDispEventImpl ::GetFuncInfoFromId

Localise l’index de fonction pour l’identificateur de répartition spécifié.

HRESULT GetFuncInfoFromId(
    const IID& iid,
    DISPID dispidMember,
    LCID lcid,
    _ATL_FUNC_INFO& info);

Paramètres

iid
[in] Référence à l’ID de la fonction.

dispidMember
[in] ID de répartition de la fonction.

lcid
[in] Contexte de paramètres régionaux de l’ID de fonction.

info
[in] Structure indiquant comment la fonction est appelée.

Valeur de retour

Valeur HRESULT standard.

IDispEventImpl ::GetIDsOfNames

Mappe un seul membre et un ensemble facultatif de noms d’arguments à un ensemble d’entiers DISPID correspondants, qui peut être utilisé lors des appels suivants à IDispatch ::Invoke.

STDMETHOD(GetIDsOfNames)(
    REFIID riid,
    LPOLESTR* rgszNames,
    UINT cNames,
    LCID lcid,
    DISPID* rgdispid);

Notes

Consultez IDispatch ::GetIDsOfNames dans le Kit de développement logiciel (SDK) Windows.

IDispEventImpl ::GetTypeInfo

Récupère les informations de type pour un objet, qui peuvent être utilisées ensuite pour obtenir les informations de type d'une interface.

STDMETHOD(GetTypeInfo)(
    UINT itinfo,
    LCID lcid,
    ITypeInfo** pptinfo);

Notes

IDispEventImpl ::GetTypeInfoCount

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Notes

Voir IDispatch ::GetTypeInfoCount dans le Kit de développement logiciel (SDK) Windows.

IDispEventImpl ::GetUserDefinedType

Récupère le type de base d’un type défini par l’utilisateur.

VARTYPE GetUserDefinedType(
    ITypeInfo* pTI,
    HREFTYPE hrt);

Paramètres

Pti
[in] Pointeur vers l’interface ITypeInfo contenant le type défini par l’utilisateur.

hrt
[in] Handle de la description de type à récupérer.

Valeur de retour

Type de variante.

Notes

Voir ITypeInfo ::GetRefTypeInfo.

IDispEventImpl ::IDispEventImpl

Constructeur . Stocke les valeurs des paramètres de modèle de classe plibid, pdiid, wMajor et wMinor.

IDispEventImpl();

IDispEventImpl ::tihclass

Ce typedef est une instance du paramètre de modèle de classe tihclass.

typedef tihclass _tihclass;

Notes

Par défaut, la classe est CComTypeInfoHolder. CComTypeInfoHolder gère les informations de type pour la classe.

Voir aussi

_ATL_FUNC_INFO, structure
IDispatchImpl, classe
IDispEventSimpleImpl, classe
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
Vue d’ensemble de la classe