Controles ActiveX de MFC: Agregar eventos comunes a un control ActiveX
Eventos comunes difieren de eventos personalizados de que automáticamente son desencadenados por la clase COleControl.COleControl contiene el miembro predefinido funciona que los eventos fire resultando de acciones comunes.Algunas acciones comunes implementados por COleControl incluyen único y doble clic en el control, los eventos de teclado, y cambios en el estado de los botones del mouse.Las entradas del mapa de eventos para eventos comunes son precedidas siempre al prefijo de EVENT_STOCK .
Eventos comunes admitidos por el asistente para agregar eventos
La clase de COleControl proporciona diez eventos comunes, incluidos en la tabla siguiente.Puede especificar los eventos que desee en el control mediante Agregue el asistente de eventos.
Eventos comunes
Evento |
Desencadenar la función |
Comentarios |
---|---|---|
Haga clic en |
FireClick vacío () |
Se desencadena cuando el control captura el mouse, se recibe los mensajes de BUTTONUP (se, centro, o derecha), y el botón se libera sobre el control.Eventos comunes MouseDown y de MouseUp aparecen antes de este evento. Entrada de asignación de eventos: EVENT_STOCK_CLICK( ) |
DblClick |
FireDblClick vacío () |
Similar al clic pero se desencadena cuando se recibe un mensaje de BUTTONDBLCLK . Entrada de asignación de eventos: EVENT_STOCK_DBLCLICK( ) |
Error |
scode, LPCSTR lpszDescription, UINT nHelpID = 0 )devoid FireError( SCODE |
Se desencadena cuando se produce un error dentro del control ActiveX fuera del ámbito de una llamada al método o un acceso de propiedad. Entrada de asignación de eventos: EVENT_STOCK_ERROREVENT( ) |
KeyDown |
void FireKeyDown( short nChar, short nShiftState ) |
Se desencadena cuando se recibe un mensaje de WM_SYSKEYDOWN o de WM_KEYDOWN . Entrada de asignación de eventos: EVENT_STOCK_KEYDOWN( ) |
KeyPress |
void FireKeyPress( short* pnChar ) |
Se desencadena cuando se recibe un mensaje de WM_CHAR . Entrada de asignación de eventos: EVENT_STOCK_KEYPRESS( ) |
KeyUp |
void FireKeyUp( short nChar, short nShiftState ) |
Se desencadena cuando se recibe un mensaje de WM_SYSKEYUP o de WM_KEYUP . Entrada de asignación de eventos: EVENT_STOCK_KEYUP( ) |
MouseDown |
y )devoid FireMouseDown( short nButton, short nShiftState, float x, float |
Desencadena si cualquier BUTTONDOWN (izquierda, centro, o derecha) se reciben.Se captura el mouse inmediatamente antes de que se desencadena este evento. Entrada de asignación de eventos: EVENT_STOCK_MOUSEDOWN( ) |
MouseMove |
y )devoid FireMouseMove( short nButton, short nShiftState, float x, float |
Se desencadena cuando se recibe un mensaje de WM_MOUSEMOVE . Entrada de asignación de eventos: EVENT_STOCK_MOUSEMOVE( ) |
MouseUp |
y )devoid FireMouseUp( short nButton, short nShiftState, float x, float |
Desencadena si cualquier BUTTONUP (izquierda, centro, o derecha) se reciben.Se libera la captura del mouse antes de que se desencadene este evento. Entrada de asignación de eventos: EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange |
FireReadyStateChange vacío () |
Se desencadena cuando las transiciones de un control al estado listo siguiente debido a la cantidad de datos recibieron. Entrada de asignación de eventos: EVENT_STOCK_READYSTATECHANGE( ) |
Agregando un evento común Con el asistente para agregar eventos
Agregar eventos comunes requiere menos trabajo que los eventos personalizados porque el desencadenamiento de evento real controla automáticamente por la clase base, COleControlde suma.El procedimiento siguiente se agrega un evento común a un control desarrollado mediante Asistente para controles ActiveX MFC.El evento, denominado KeyPress, se desencadena cuando se presiona una tecla y el control está activo.Este procedimiento se puede utilizar para agregar otros eventos comunes.Sustituya el nombre de evento común seleccionado para KeyPress.
Para agregar el a que almacene el evento mediante el asistente para agregar eventos
Cargue el proyecto de control.
En la vista de clases, haga clic con el botón secundario en la clase de control ActiveX para abrir el menú contextual.
En el menú contextual, haga clic agregar y haga clic en Agregar evento.
Se abrirá el asistente para agregar eventos.
En la lista desplegable de Event Name , seleccione KeyPress.
Haga clic en Finalizar.
Agregue los cambios del asistente de eventos para eventos comunes
Como los eventos comunes son controlados por la clase base de controles, el asistente para agregar eventos no cambia la declaración de clase de ningún modo.Agrega el evento al evento de control asignado y crea una entrada en el archivo de .IDL.La siguiente línea se agrega al mapa del evento de control, ubicado en el archivo de implementación de la clase control (.CPP):
EVENT_STOCK_KEYPRESS()
Agregar este código desencadena un evento KeyPress cuando se recibe un mensaje de WM_CHAR y el control está activo.El evento KeyPress posible desencadenador en otros momentos llamando a la función bounce (por ejemplo, FireKeyPress) dentro de código.
El asistente para agregar eventos agrega la siguiente línea de código al archivo de .IDL de control:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
Esta línea asocia el eventos KeyPress a su identificador estándar send y permite que el contenedor prever el evento KeyPress.