Contrôles ActiveX MFC : ajouter des événements stock à un contrôle ActiveX
Les événements standard sont différents des événements personnalisés du fait qu'ils ne sont pas automatiquement générés par la classe 77hhz71h(v=vs.120).md. COleControl contient les méthodes prédéfinies qui déclenchent des événements provenant d'actions courantes. Certaines actions courantes implémentées par COleControl incluent les clics simples et doubles sur le contrôle, les événements du clavier, et les modifications de l'état des boutons de la souris. Les entrées de table pour les événements standard sont toujours précédés par le préfixe EVENT_STOCK.
Événements standard pris en charge par l'Assistant Ajout d'événement
La classe COleControl propose dix événements standard, répertoriés dans le tableau suivant. Vous pouvez spécifier les événements que vous souhaitez dans votre contrôle à l'aide de l'Assistant Ajout d'événement.
Evénements standard
Événement |
Fonction de génération |
Commentaires |
---|---|---|
Cliquez sur |
void FireClick( ) |
Déclenché lorsque le contrôle capture la souris, un message BUTTONUP (gauche, milieu ou droite) est reçu, et le bouton est libéré sur le contrôle. Les événements standard MouseDown et MouseUp se produisent avant cet événement. Entrée de table d'événement : EVENT_STOCK_CLICK( ) |
DblClick |
void FireDblClick( ) |
Semblable au clic mais déclenché lorsqu'un message BUTTONDBLCLK est reçu. Entrée de table d'événement : EVENT_STOCK_DBLCLICK( ) |
Erreur |
void FireError( SCODE scode, LPCSTR lpszDescription, UINT nHelpID = 0 ) |
Déclenché lorsqu'une erreur se produit dans le contrôle ActiveX en dehors de l'étendue d'un appel de méthode ou d'une recherche de propriété. Entrée de table d'événement : EVENT_STOCK_ERROREVENT( ) |
KeyDown |
void FireKeyDown( short nChar, short nShiftState ) |
Déclenché lorsqu'un message WM_SYSKEYDOWN ou WM_KEYDOWN est reçu. Entrée de table d'événement : EVENT_STOCK_KEYDOWN( ) |
KeyPress |
void FireKeyPress( short* pnChar ) |
Déclenché lorsqu'un message WM_CHAR est reçu. Entrée de table d'événement : EVENT_STOCK_KEYPRESS( ) |
KeyUp |
void FireKeyUp( short nChar, short nShiftState ) |
Déclenché lorsqu'un message WM_SYSKEYUP ou WM_KEYUP est reçu. Entrée de table d'événement : EVENT_STOCK_KEYUP( ) |
MouseDown |
void FireMouseDown( short nButton, short nShiftState, float X, float y ) |
Déclenché si tout BUTTONDOWN (gauche, milieu, ou droite) est reçu. La souris est capturée immédiatement avant que cet événement soit déclenché. Entrée de table d'événement : EVENT_STOCK_MOUSEDOWN( ) |
MouseMove |
void FireMouseMove( short nButton, short nShiftState, float X, float y ) |
Déclenché lorsqu'un message WM_MOUSEMOVE est reçu. Entrée de table d'événement : EVENT_STOCK_MOUSEMOVE( ) |
MouseUp |
void FireMouseUp( short nButton, short nShiftState, float X, float y ) |
Déclenché si tout BUTTONUP (gauche, milieu, ou droite) est reçu. La capture de la souris est libérée avant que cet événement soit déclenché. Entrée de table d'événement : EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange |
void FireReadyStateChange( ) |
Déclenché lorsqu'un contrôle passe à l'état prêt suivant en raison de la quantité de données reçues. Entrée de table d'événement : EVENT_STOCK_READYSTATECHANGE( ) |
Ajouter un événement standard à l'aide de l'assistant d'ajout d'événement
L'ajout d'événements standard requiert moins de travail que l'ajout d'évènements utilisateurs car le déclenchement de l'événement lui-même est géré automatiquement par la classe de base, COleControl. La procédure suivante ajoute un événement standard à un contrôle qui a été développé à l'aide de Assistant Contrôle ActiveX MFC. L'événement, appelé KeyPress, se déclenche lorsqu'une touche est pressé et le contrôle est actif. Vous pouvez également l'utiliser pour ajouter d'autres événements standard. Remplacez le nom d'événement standard sélectionné par KeyPress.
Pour ajouter l'évènement standard KeyPress à l'aide de l'assistant d'ajout d'événement
Chargez votre projet de contrôle.
Sous Affichage de classes, cliquez avec le bouton droit sur votre classe de contrôle ActiveX pour ouvrir le menu contextuel.
Dans le menu contextuel, cliquez sur Ajouter, puis sur Ajouter un événement.
Cela ouvre le menu de création d'événements.
Dans la liste déroulante Nom d'évènement, sélectionnez KeyPress.
Cliquez sur Terminer.
Modifications de l'Assistant Ajout d'événement pour les événements standard
Comme les événements standard sont gérés par la classe de base du contrôle, l'assistant d'ajout d'événement ne modifie pas la déclaration de classe de quelque manière que ce soit. Il ajoute l'événement à la table des événements du contrôle et effectue une entrée dans le fichier .IDL. La ligne suivante est ajoutée à la table des événements du contrôle, situé dans le fichier de l'implémentation du contrôle de classe (.CPP) :
EVENT_STOCK_KEYPRESS()
Ajouter le code déclenche un événement KeyPress lorsqu'un message WM_CHAR est reçu et le contrôle est actif. L'événement KeyPress peut être activé à d'autres moments en appelant sa fonction d'activation (par exemple, FireKeyPress) à partir du code de contrôle.
L'assistant d'ajout d'événements ajoute la ligne de code suivante au fichier .IDL de contrôle :
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
Cette ligne associe l'événement KeyPress avec l'ID de dispatch standard et permet au conteneur d'anticiper l'événement de KeyPress.