Eventos de ratón
Ya tuvimos la oportunidad de asegurarnos de que recibimos eventos del ratón utilizando el indicador EventAll.mq5 de la sección Propiedades de gráficos relacionados con eventos. El evento CHARTEVENT_CLICK se envía al programa MQL en cada clic del botón del ratón en la ventana, y los eventos CHARTEVENT_MOUSE_MOVE de movimiento del cursor y CHARTEVENT_MOUSE_WHEEL de desplazamiento de la rueda requieren una activación previa en la configuración del gráfico, para lo que sirven las propiedades CHART_EVENT_MOUSE_MOVE y CHART_EVENT_MOUSE_WHEEL, respectivamente (ambas están desactivadas por defecto).
Si hay un objeto gráfico bajo el ratón, al pulsar el botón no sólo se genera el evento CHARTEVENT_CLICK sino también CHARTEVENT_OBJECT_CLICK.
Para los eventos CHARTEVENT_CLICK y CHARTEVENT_MOUSE_MOVE, los parámetros del manejador OnChartEvent contienen la siguiente información:
- lparam - coordenada X
- dparam - coordenada Y
Además, para el evento CHARTEVENT_MOUSE_MOVE, el parámetro sparam contiene una representación de cadena de una máscara de bits que describe el estado de los botones del ratón y las teclas de control (Ctrl, Shift). Establecer en 1 un bit determinado significa pulsar el botón o la tecla correspondiente.
Bits |
Descripción |
---|---|
0 |
Estado del botón izquierdo del ratón |
1 |
Estado del botón derecho del ratón |
2 |
Estado de la tecla MAYÚS |
3 |
Estado de la tecla CTRL |
4 |
Estado del botón central del ratón |
5 |
Estado del primer botón adicional del ratón |
6 |
Estado del segundo botón adicional del ratón |
Por ejemplo, si el bit 0 está activado, dará el número 1 (1 << 0), y si el bit 4º está activado, dará el número 16 (1 << 4). La pulsación simultánea de botones o teclas se indica mediante una superposición de bits.
Para el evento CHARTEVENT_MOUSE_WHEEL, las coordenadas X e Y, así como las banderas de estado de los botones del ratón y las teclas de control, se codifican de una manera especial dentro del parámetro lparam, y el parámetro dparam informa de la dirección (más/menos) y la cantidad de desplazamiento de la rueda (múltiplos de ±120).
El entero de 8 bytes lparam combina varios de los campos de información mencionados.
Bytes |
Descripción |
---|---|
0 |
Valor de tipo short con la coordenada X |
1 |
|
2 |
Valor de tipo short con la coordenada Y |
3 |
|
4 |
Máscara de bits de los estados de botones y teclas |
5 |
No se utiliza |
6 |
|
7 |
Independientemente del tipo de evento, las coordenadas del ratón se transmiten en relación con toda la ventana, incluidas las subventanas, por lo que deben recalcularse para una subventana específica si es necesario.
Para comprender mejor CHARTEVENT_MOUSE_WHEEL, utilice el indicador EventMouseWheel.mq5. Recibe y descodifica los mensajes y, a continuación, envía su descripción al registro.
#define KEY_FLAG_NUMBER 7
|
Ejecute el indicador en el gráfico y desplace la rueda del ratón pulsando sucesivamente varios botones y teclas. He aquí un ejemplo de resultado:
X=186 Y=303 D=-120
|