Tables d'événements

Chaque fois qu'un contrôle souhaite indiquer à son conteneur qu'une action (déterminée par le développeur du contrôle) s'est produite (par exemple une combinaison de touches, un clic du bouton de la souris ou une modification de l'état du contrôle), il appelle une fonction de déclenchement d'événement. Cette fonction notifie au conteneur de contrôle qu'une action importante s'est produite en déclenchant l'événement associé.

La bibliothèque MFC (Microsoft Foundation Class) offre un modèle de programmation optimisé pour déclencher des événements. Dans ce modèle, des "tables d'événements" sont utilisées pour indiquer quelles sont les fonctions qui déclenchent quels événements pour un contrôle donné. Les tables d'événements contiennent une macro pour chaque événement. Par exemple, une table d'événement qui déclenche un événement Clic pourrait se présenter comme suit :

BEGIN_EVENT_MAP(CMyAxCtrl, COleControl)
EVENT_STOCK_CLICK()
END_EVENT_MAP()

La EVENT_STOCK_CLICK macro indique que le contrôle déclenche un événement Stock Click chaque fois qu’il détecte un clic de souris. Pour obtenir une description plus détaillée des autres événements boursiers, consultez l’article Contrôles ActiveX : Événements. Les macros sont également disponibles pour afficher les événements personnalisés.

Bien que les macros de table d'événements sont importantes, elles ne sont généralement pas insérées directement. Cela est dû au fait que la fenêtre Propriétés (en mode Classe) crée automatiquement des entrées de mappage d’événements dans vos fichiers sources lorsque vous l’utilisez pour associer des fonctions de déclenchement d’événements à des événements. Chaque fois que vous souhaitez modifier ou ajouter une entrée de carte d’événements, vous pouvez utiliser la fenêtre Propriétés .

Pour prendre en charge les tables d'événements, MFC fournit les macros suivantes :

Macros Event Map

Déclaration et démarcation de table d'événements

Nom Description
DECLARE_EVENT_MAP Indique qu'une table d'événements est utilisée dans une classe pour faire correspondre les événements des fonctions de déclenchement d'événement (doit être utilisée dans la déclaration de classe).
BEGIN_EVENT_MAP Démarre la définition d'une table d'événements (doit être utilisée dans l'implémentation de classe).
END_EVENT_MAP Termine la définition d'une table d'événements (doit être utilisée dans l'implémentation de classe).

Macros de mappage d'événements

Nom Description
EVENT_CUSTOM Indique que la fonction de déclenchement d'événement déclenche l'événement spécifié.
EVENT_CUSTOM_ID Indique que la fonction de déclenchement d'événement déclenche l'événement spécifié, avec un ID de distribution indiqué.

Macros de mappage des messages

Nom Description
ON_OLEVERB Désigne un verbe personnalisé géré par le contrôle OLE.
ON_STDOLEVERB Remplace un mappage de verbe standard du contrôle OLE.

DECLARE_EVENT_MAP

Chaque COleControlclasse dérivée de votre programme peut fournir un mappage d’événements pour spécifier les événements que votre contrôle va déclencher.

DECLARE_EVENT_MAP()

Notes

Utilisez la macro DECLARE_EVENT_MAP à la fin de votre déclaration de classe. Ensuite, dans le fichier .cpp qui définit les fonctions membres de la classe, utilisez la macro BEGIN_EVENT_MAP, les entrées de macro pour chacun des événements du contrôle et la macro END_EVENT_MAP pour déclarer la fin de la liste des événements.

Pour plus d’informations sur les mappages d’événements, consultez l’article Contrôles ActiveX : Événements.

Spécifications

En-tête afxctl.h

BEGIN_EVENT_MAP

Commence la définition de votre mappage d’événements.

BEGIN_EVENT_MAP(theClass,  baseClass)

Paramètres

theClass
Spécifie le nom de la classe de contrôle dont le mappage d’événements est le suivant.

baseClass
Spécifie le nom de la classe de base de la Classe.

Notes

Dans le fichier d’implémentation (.cpp) qui définit les fonctions membres de votre classe, démarrez le mappage d’événements avec la macro BEGIN_EVENT_MAP, puis ajoutez des entrées de macro pour chacun de vos événements, puis terminez le mappage d’événements avec la macro END_EVENT_MAP.

Pour plus d’informations sur les mappages d’événements et la macro BEGIN_EVENT_MAP, consultez l’article Contrôles ActiveX : Événements.

Spécifications

En-tête afxctl.h

END_EVENT_MAP

Utilisez la macro END_EVENT_MAP pour mettre fin à la définition de votre mappage d’événements.

END_EVENT_MAP()

Spécifications

En-tête afxctl.h

EVENT_CUSTOM

Définit une entrée de mappage d’événements pour un événement personnalisé.

EVENT_CUSTOM(pszName, pfnFire,  vtsParams)

Paramètres

pszName
Nom de l’événement.

pfnFire
Nom de la fonction de déclenchement d’événement.

vtsParams
Liste séparée par un espace d’une ou plusieurs constantes spécifiant la liste des paramètres de la fonction.

Notes

Le paramètre vtsParams est une liste séparée par un espace des valeurs des VTS_ constantes. Une ou plusieurs de ces valeurs séparées par des espaces (et non des virgules) spécifient la liste des paramètres de la fonction. Par exemple :

VTS_COLOR VTS_FONT

spécifie une liste contenant un entier 32 bits représentant une valeur de couleur RVB, suivie d’un pointeur vers l’interface IFontDisp d’un objet de police OLE.

Les VTS_ constantes et leurs significations sont les suivantes :

Symbole Type de paramètre
VTS_I2 short
VTS_I4 long
VTS_R4 float
VTS_R8 double
VTS_COLOR OLE_COLOR
VTS_CY DEVISE
VTS_DATE DATE
VTS_BSTR constcarboniser*
VTS_DISPATCH LPDISPATCH
VTS_FONT IFontDispatch*
VTS_HANDLE HANDLE
VTS_SCODE SCODE
VTS_BOOL BOOL
VTS_VARIANT const VARIANT*
VTS_PVARIANT VARIANT*
VTS_UNKNOWN LPUNKNOWN
VTS_OPTEXCLUSIVE OLE_OPTEXCLUSIVE
VTS_PICTURE IPictureDisp*
VTS_TRISTATE OLE_TRISTATE
VTS_XPOS_PIXELS OLE_XPOS_PIXELS
VTS_YPOS_PIXELS OLE_YPOS_PIXELS
VTS_XSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_YSIZE_PIXELS OLE_YSIZE_PIXELS
TS_XPOS_HIMETRIC OLE_XPOS_HIMETRIC
VTS_YPOS_HIMETRIC OLE_YPOS_HIMETRIC
VTS_XSIZE_HIMETRIC OLE_XSIZE_HIMETRIC
VTS_YSIZE_HIMETRIC OLE_YSIZE_HIMETRIC

Remarque

Des constantes variant supplémentaires ont été définies pour tous les types de variantes, à l’exception de VTS_FONT et de VTS_PICTURE, qui fournissent un pointeur vers la constante de données variant. Ces constantes sont nommées à l’aide de la VTS_Pconstantname convention. Par exemple, VTS_PCOLOR est un pointeur vers une constante VTS_COLOR.

Spécifications

En-tête afxctl.h

EVENT_CUSTOM_ID

Définit une fonction de déclenchement d’événement pour un événement personnalisé appartenant à l’ID de distribution spécifié par dispid.

EVENT_CUSTOM_ID(
    pszName,
    dispid,
    pfnFire,
    vtsParams)

Paramètres

pszName
Nom de l’événement.

dispid
ID de répartition utilisé par le contrôle lors du déclenchement de l’événement.

pfnFire
Nom de la fonction de déclenchement d’événement.

vtsParams
Liste de variables des paramètres passés au conteneur de contrôle lorsque l’événement est déclenché.

Notes

L’argument vtsParams est une liste séparée par un espace des valeurs des VTS_ constantes. Une ou plusieurs de ces valeurs séparées par des espaces, et non par des virgules, spécifient la liste des paramètres de la fonction. Par exemple :

VTS_COLOR VTS_FONT

spécifie une liste contenant un entier 32 bits représentant une valeur de couleur RVB, suivie d’un pointeur vers l’interface IFontDisp d’un objet de police OLE.

Pour obtenir la liste des VTS_ constantes, consultez EVENT_CUSTOM.

Spécifications

En-tête afxctl.h

ON_OLEVERB

Cette macro définit une entrée de mappage de messages qui mappe un verbe personnalisé à une fonction membre spécifique de votre contrôle.

ON_OLEVERB(idsVerbName,  memberFxn)

Paramètres

idsVerbName
ID de ressource de chaîne du nom du verbe.

memberFxn
Fonction appelée par l’infrastructure lorsque le verbe est appelé.

Notes

L’éditeur de ressources peut être utilisé pour créer des noms de verbes personnalisés ajoutés à votre table de chaînes.

Le prototype de fonction pour memberFxn est le suivant :

BOOL memberFxn(
   LPMSG    lpMsg,
   HWND     hWndParent,
   LPCRECT  lpRect);

Les valeurs des paramètres lpMsg, hWndParent et lpRect sont extraites des paramètres correspondants de la IOleObject::DoVerb fonction membre.

Spécifications

En-tête afxole.h

ON_STDOLEVERB

Utilisez cette macro pour remplacer le comportement par défaut d’un verbe standard.

ON_STDOLEVERB(iVerb, memberFxn)

Paramètres

iVerb
Index de verbe standard pour le verbe en cours de substitution.

memberFxn
Fonction appelée par l’infrastructure lorsque le verbe est appelé.

Notes

L’index de verbe standard est du formulaire OLEIVERB_, suivi d’une action. OLEIVERB_SHOW, OLEIVERB_HIDE et OLEIVERB_UIACTIVATE sont des exemples de verbes standard.

Consultez ON_OLEVERB pour obtenir une description du prototype de fonction à utiliser comme paramètre memberFxn .

Spécifications

En-tête afxole.h

Voir aussi

Macros et globals