Partager via


Gel des événements

Un conteneur peut avertir un contrôle qu’il n’est pas prêt à répondre aux événements en appelant IOleControl ::FreezeEvents avec TRUE. Il peut libérer les événements en appelant FreezeEvents avec FALSE. Lorsqu’un conteneur fige les événements, il gele le traitement des événements, et non la réception d’événements ; autrement dit, un conteneur peut toujours recevoir des événements pendant que les événements sont gelés. Si un conteneur reçoit une notification d’événement pendant que ses événements sont gelés, le conteneur doit ignorer l’événement. Aucune autre action n’est appropriée.

Un contrôle doit prendre note de l’appel d’un conteneur à FreezeEvents avec TRUE s’il est important de contrôler qu’un événement n’est pas manqué. Alors que le traitement des événements d’un conteneur est figé, un contrôle doit implémenter l’une des techniques suivantes :

  • Déclenchez les événements dans la connaissance complète que le conteneur ne prendra aucune action.
  • Ignorez tous les événements que le contrôle aurait déclenchés.
  • Mettez en file d’attente tous les événements en attente et déclenchez-les une fois que le conteneur a appelé FreezeEvents avec FAUX.
  • Mettez en file d’attente uniquement les événements pertinents ou importants et déclenchez-les une fois que le conteneur a appelé FreezeEvents avec FAUX.

Chaque technique est acceptable et appropriée dans différentes circonstances. Le développeur de contrôles est chargé de déterminer et d’implémenter la technique appropriée pour les fonctionnalités du contrôle.