Controles ActiveX MFC: Agregar eventos estándar a un control ActiveX
Los eventos estándar difieren de los eventos personalizados en que se desencadenan automáticamente mediante la clase COleControl. COleControl
contiene funciones miembro predefinidas que desencadenan eventos resultantes de acciones comunes. Algunas acciones comunes implementadas por COleControl
incluyen clics únicos y dobles en el control, eventos de teclado y cambios en el estado de los botones del mouse. Las entradas del mapa de eventos para los eventos estándar siempre van precedidas del prefijo EVENT_STOCK.
Eventos estándar admitidos por el Asistente para agregar eventos
La clase COleControl
proporciona diez eventos estándar, enumerados en la tabla siguiente. Puede especificar los eventos que quiera en el control mediante el Asistente para agregar eventos.
Eventos estándar
Evento | Función de desencadenamiento | Comentarios |
---|---|---|
Haga clic | void FireClick( ) | Se desencadena cuando el control captura el mouse, se recibe cualquier mensaje BUTTONUP (izquierda, centro o derecha), y el botón se libera sobre el control. Los eventos estándar MouseDown y MouseUp se producen antes de este evento. Entrada del mapa de eventos: EVENT_STOCK_CLICK( ) |
DblClick | void FireDblClick( ) | Similar a Click. pero se desencadena cuando se recibe un mensaje BUTTONDBLCLK. Entrada del mapa de eventos: EVENT_STOCK_DBLCLICK( ) |
Error | void FireError( SCODEscode, LPCSTRlpszDescription , UINTnHelpID = 0 ) |
Se desencadena cuando se produce un error dentro del control ActiveX fuera del ámbito de una llamada de método o acceso a propiedades. Entrada del mapa de eventos: EVENT_STOCK_ERROREVENT( ) |
KeyDown | void FireKeyDown( shortnChar , shortnShiftState ) |
Se desencadena cuando se recibe un mensaje WM_SYSKEYDOWN o WM_KEYDOWN .Entrada del mapa de eventos: EVENT_STOCK_KEYDOWN( ) |
KeyPress | void FireKeyPress( short*pnChar ) |
Se desencadena cuando se recibe un mensaje WM_CHAR .Entrada del mapa de eventos: EVENT_STOCK_KEYPRESS( ) |
KeyUp | void FireKeyUp( shortnChar , shortnShiftState ) |
Se desencadena cuando se recibe un mensaje WM_SYSKEYUP o WM_KEYUP .Entrada del mapa de eventos: EVENT_STOCK_KEYUP( ) |
MouseDown | void FireMouseDown( shortnButton , shortnShiftState , floatx, floaty) |
Se desencadena si se recibe BUTTONDOWN (izquierda, centro o derecha). El mouse se captura inmediatamente antes de que se desencadene este evento. Entrada del mapa de eventos: EVENT_STOCK_MOUSEDOWN( ) |
MouseMove | void FireMouseMove( shortnButton , shortnShiftState , floatx, floaty) |
Se desencadena cuando se recibe un mensaje WM_MOUSEMOVE. Entrada del mapa de eventos: EVENT_STOCK_MOUSEMOVE( ) |
MouseUp | void FireMouseUp( shortnButton , shortnShiftState , floatx, floaty) |
Se desencadena si se recibe BUTTONUP (izquierda, centro o derecha). La captura del mouse se libera antes de que se desencadene este evento. Entrada del mapa de eventos: EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange | void FireReadyStateChange( ) | Se desencadena cuando un control pasa al siguiente estado listo debido a la cantidad de datos recibidos. Entrada del mapa de eventos: EVENT_STOCK_READYSTATECHANGE( ) |
Adición de un evento estándar mediante el Asistente para agregar eventos
Para agregar eventos estándar se necesita menos trabajo que agregar eventos personalizados porque la activación del evento real la controla automáticamente la clase base, COleControl
. En el procedimiento siguiente se agrega un evento estándar a un control que se ha desarrollado mediante el Asistente para controles ActiveX MFC. El evento, denominado KeyPress, se desencadena cuando se presiona una tecla y el control está activo. Este procedimiento también se puede usar para agregar otros eventos estándar. Sustituya el nombre del evento estándar seleccionado por KeyPress.
Para agregar el evento estándar KeyPress mediante el Asistente para agregar eventos
Cargue el proyecto del control.
En Vista de clases, haga clic con el botón derecho en la clase del control ActiveX para abrir el menú contextual.
En el menú contextual, haga clic en Agregar y después en Agregar evento.
Se abrirá el Asistente para agregar eventos.
En la lista desplegable Nombre del evento, seleccione
KeyPress
.Haga clic en Finalizar
Cambios del Asistente para agregar eventos para eventos estándar
Como la clase base del control controla los eventos estándar, el Asistente para agregar eventos no cambia la declaración de la clase de ninguna manera. Agrega el evento al mapa de eventos del control y crea una entrada en su archivo .IDL. La siguiente línea se agrega al mapa de eventos del control, ubicado en el archivo de implementación de la clase de control (.CPP):
EVENT_STOCK_KEYPRESS()
Al agregar este código, se activa un evento KeyPress cuando se recibe un mensaje WM_CHAR y el control está activo. El evento KeyPress se puede desencadenar en otros casos si se llama a su función de desencadenamiento (por ejemplo, FireKeyPress
) desde el código de control.
El Asistente para agregar eventos agrega la siguiente línea de código al archivo .IDL del control:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
Esta línea asocia el evento KeyPress con su identificador de envío estándar y permite que el contenedor anticipe el evento KeyPress.
Consulte también
Controles ActiveX de MFC
Controles ActiveX MFC: Métodos
COleControl (clase)