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 COleControl
classe 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 | const carboniser* |
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