Compartir a través de


Eventos de control (COM)

Además de proporcionar propiedades y métodos, un control también proporciona interfaces salientes para notificar a su cliente de eventos. El cliente debe admitir el control de estos eventos. Consulte eventos en objetos COM y conectables para obtener más información sobre cómo funcionan los objetos conectables.

Un control puede admitir interfaces salientes diferentes con fines diferentes. Todas las interfaces salientes se marcan como interfaces de origen en la información de tipo del control, pero solo una está marcada como predeterminada para indicar que es la interfaz saliente principal.

Un contenedor puede admitir una o varias de las interfaces salientes definidas por un control . El control debe estar preparado para tratar con contenedores que solo proporcionan compatibilidad con algunas de sus interfaces salientes.

Los controles admiten cuatro tipos de eventos:

  • Solicitar eventos. Un control solicita permiso de su cliente para hacer algo llamando a un método en la interfaz saliente, lo que desencadena un evento de solicitud. El cliente señala el control a través de un parámetro booleano y out en el método al que llamó el control. Por lo tanto, el cliente puede impedir que el control realice la acción.
  • Antes de los eventos. Un control notifica a su sombrero de cliente que va a hacer algo llamando a un método en la interfaz saliente, lo que desencadena un evento anterior. El cliente no tiene la oportunidad de evitar la acción, pero puede realizar los pasos necesarios dados a la acción que está a punto de producirse.
  • Después de los eventos. Un control notifica a su cliente que acaba de hacer algo llamando a un método en la interfaz saliente, lo que desencadena un evento posterior. De nuevo, el cliente no puede cancelar esta acción, pero puede realizar los pasos necesarios según la acción que se ha producido.
  • Realice eventos. Un control desencadena un evento do para permitir que su cliente invalide la acción del control y proporcione algunas acciones alternativas o complementarias. Normalmente, el método que un control llama a un evento do tiene varios parámetros para negociar con el cliente sobre las acciones que se producirán.

Los siguientes dispids se definen para eventos estándar que los controles pueden admitir: Click, DblClick, KeyDown, KeyPress, KeyUp, MouseMove, MouseUp y Error. Todos estos eventos estándar tienen valores DISPID negativos, lo que indica su estado estándar.

El método IOleControl::FreezeEvents, cuando se llama a con TRUE, indica a un control si el contenedor se molestará en controlar eventos del control hasta que se vuelva a llamar a FreezeEvents con FALSE. Durante este tiempo, el control no puede depender del contenedor que controle realmente ningún evento. Si se debe controlar un evento, el control debe poner en cola el evento para activarlo cuando se llama a FreezeEvents con FALSE.

controles ActiveX