Compartir a través de


Inmovilizar eventos

Un contenedor puede notificar a un control que no está listo para responder a eventos llamando a IOleControl::FreezeEvents con TRUE. Puede descongelar los eventos llamando a FreezeEvents con FALSE. Cuando un contenedor inmoviliza los eventos, se bloquea el procesamiento de eventos, no la recepción de eventos; es decir, un contenedor todavía puede recibir eventos mientras se inmovilizan los eventos. Si un contenedor recibe una notificación de eventos mientras sus eventos están inmovilizados, el contenedor debe omitir el evento. Ninguna otra acción es adecuada.

Un control debe tomar nota de la llamada de un contenedor a FreezeEvents con TRUE si es importante para el control que no se pierde un evento. Mientras el procesamiento de eventos de un contenedor está inmovilizado, un control debe implementar una de las técnicas siguientes:

  • Active los eventos en el conocimiento completo de que el contenedor no realizará ninguna acción.
  • Descarte todos los eventos que el control habría desencadenado.
  • Poner en cola todos los eventos pendientes y desencadenarlos después de que el contenedor haya llamado a FreezeEvents con FALSE.
  • Poner en cola solo eventos relevantes o importantes y desencadenarlos después de que el contenedor haya llamado a FreezeEvents con FALSE.

Cada técnica es aceptable y adecuada en circunstancias diferentes. El desarrollador del control es responsable de determinar e implementar la técnica adecuada para la funcionalidad del control.