Événements de contrôle (COM)

En plus de fournir des propriétés et des méthodes, un contrôle fournit également des interfaces sortantes pour notifier son client des événements. Le client doit prendre en charge la gestion de ces événements. Pour plus d’informations sur le fonctionnement des objets connectables, consultez Événements dans les objets COM et connectables .

Un contrôle peut prendre en charge différentes interfaces sortantes à des fins différentes. Toutes les interfaces sortantes sont marquées comme interfaces sources dans les informations de type du contrôle, mais une seule est marquée par défaut pour indiquer qu’il s’agit de l’interface sortante principale.

Un conteneur peut prendre en charge une ou plusieurs interfaces sortantes définies par un contrôle. Le contrôle doit être prêt à traiter les conteneurs qui prennent uniquement en charge certaines de leurs interfaces sortantes.

Les contrôles prennent en charge quatre types d’événements :

  • Événements de demande. Un contrôle demande à son client l’autorisation d’effectuer quelque chose en appelant une méthode dans l’interface sortante, déclenchant ainsi un événement de demande. Le client signale le contrôle via un paramètre de sortie booléen dans la méthode appelée par le contrôle. Le client peut donc empêcher le contrôle d’effectuer l’action.
  • Avant les événements. Un contrôle informe son chapeau client qu’il va faire quelque chose en appelant une méthode dans l’interface sortante, déclenchant ainsi un événement avant. Le client n’a pas la possibilité d’empêcher l’action, mais il peut prendre toutes les mesures nécessaires en fonction de l’action sur le point de se produire.
  • Après les événements. Un contrôle informe son client qu’il vient de faire quelque chose en appelant une méthode dans l’interface sortante, déclenchant ainsi un événement après. Là encore, le client ne peut pas annuler cette action, mais il peut prendre les mesures nécessaires en fonction de l’action qui s’est produite.
  • Effectuer des événements. Un contrôle déclenche un événement do pour permettre à son client de remplacer l’action du contrôle et de fournir des actions alternatives ou supplémentaires. En règle générale, la méthode qu’un contrôle appelle pour un événement do a un certain nombre de paramètres pour négocier avec le client les actions qui se produisent.

Les dispids suivants sont définis pour les événements standard que les contrôles peuvent prendre en charge : Click, DblClick, KeyDown, KeyPress, KeyUp, MouseMove, MouseUp et Error. Tous ces événements standard ont des valeurs DISPID négatives, ce qui indique leur status standard.

La méthode IOleControl::FreezeEvents , lorsqu’elle est appelée avec TRUE, indique à un contrôle si le conteneur s’embête à gérer les événements à partir du contrôle jusqu’à ce que FreezeEvents soit de nouveau appelé avec FALSE. Pendant ce temps, le contrôle ne peut pas dépendre du conteneur qui gère réellement des événements. Si un événement doit être géré, le contrôle doit mettre l’événement en file d’attente afin de le déclencher lorsque FreezeEvents est appelé avec FALSE.

Contrôles ActiveX