Gel des événements
Un conteneur peut notifier 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 des événements, il fige 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 figés. Si un conteneur reçoit une notification d’événement alors que ses événements sont figé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 pour le contrôle qu’un événement ne soit pas manqué. Pendant 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 en sachant que le conteneur n’effectuera 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 FALSE.
- 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 FALSE.
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.