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. Vea Eventos en COM y Objetos conectables para obtener más información sobre cómo funcionan los objetos conectables.

Un control puede admitir diferentes interfaces salientes 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:

  • Eventos de solicitud. Un control solicita permiso a su cliente para hacer algo mediante una llamada 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 saliente 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 según la acción que está a punto de producirse.
  • Después de 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 after. 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.
  • Realizar 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 al que llama un control para 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 los 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 con TRUE, indica a un control si el contenedor se molestará en controlar los 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