¿Cómo puedo determinar si el botón de desplazamiento está pulsado o presionado y, en ese caso, presionarlo? - página 4

 
Zhunko:

Si Leo estuvo atento, el enlace a la biblioteca es mi WinUser32.mqh. Tiene todos los comandos y funciones necesarios. No es necesario exportar nada.


33017 - quitar/poner el autoscroll;
¿o algo más?
 
LEOK:

33017 - quitar/poner el autoscroll;
¿o algo más?
Spy++ es una ayuda.
Tome la información directamente de la fuente.
 
LEOK:

33017 - quitar/ajustar autoscroll;
o algo más ?
Para el control, sí. Para el estado, se necesitan las propiedades del gráfico.
 

Personalmente, sigo sin entender cuál es el problema de utilizar TB_GETSTATE. ¿De qué actividad en la ventana estábamos hablando? Es un mensaje normal de ventana enviado al control, al igual que WM_GETTEXT, BM_GETSTATE, etc. Siempre he utilizado estos mensajes, sin ningún problema. Y la aplicación recibe información de los controles con estos mensajes de la misma manera.

Y no importa si la ventana está activa o no.

 
Meat:

Personalmente sigo sin entender cuál es el problema de usar TB_GETSTATE. ¿De qué actividad en la ventana estábamos hablando? Es un mensaje normal de ventana enviado al control, al igual que WM_GETTEXT, BM_GETSTATE, etc. Siempre he utilizado estos mensajes, sin ningún problema. Y la aplicación recibe información de los controles con estos mensajes de la misma manera.

No importa si la ventana está activa o no.

Este panel sólo funciona con el gráfico activo. ¿Qué ocurrirá si, en el momento anterior al envío del mensaje, la actividad de la ventana cambia? Se activará otra ventana del gráfico. En consecuencia, obtendrá la posición del botón de la otra ventana en lugar de la suya. En este caso, ¿cómo se puede sincronizar la actividad de la ventana de la que se quiere obtener la posición del botón con el mensaje a enviar? Si no se hace esto, habrá muchos errores inesperados. Incluso con DLL esto no es obvio.

Es más fácil y fiable conseguirlo a través de las propiedades gráficas.

 
Zhunko:

Este panel sólo funciona con el horario activo. ¿Qué ocurre si la actividad de la ventana cambia un momento antes de que se envíe el mensaje? Se activa otra ventana gráfica. En consecuencia, obtendrá la posición del botón para otra ventana en lugar de la suya. En este caso, ¿cómo se puede sincronizar la actividad de la ventana de la que se quiere obtener la posición del botón con el mensaje a enviar? Si no se hace esto, habrá muchos errores inesperados. Incluso con DLL esto no es obvio.

Esmás fácil y fiable conseguirlo a través de las propiedades gráficas.


Por favor, dame un ejemplo de cómo utilizar (código): ¿cómo obtenerlo a través de las propiedades del gráfico?
 
LEOK:
Por favor, dame un ejemplo de cómo utilizar (código): ¿cómo conseguir esto a través de las propiedades del gráfico?
Imita el comando para abrir las propiedades del gráfico.
Esperar al diálogo modal.
Encuéntralo.
Encuentre el elemento requerido.
Cerrar el diálogo modal.

Qué preguntas tienes...
 
Zhunko:

Este panel sólo funciona con el horario activo. ¿Qué ocurre si la actividad de la ventana cambia un momento antes de que se envíe el mensaje? Se activa otra ventana gráfica. En consecuencia, obtendrá la posición del botón para otra ventana en lugar de la suya. En este caso, ¿cómo se puede sincronizar la actividad de la ventana de la que se quiere obtener la posición del botón con el mensaje a enviar? Si no se hace esto, habrá muchos errores inesperados. Incluso con DLL esto no es obvio.

Es más fácil y fiable conseguirlo a través de las propiedades de los gráficos.

Bueno, primero puede forzar la activación de la carta requerida. Y también por fiabilidad, comprueba el nombre de la ventana principal del terminal. Debe contener el nombre del gráfico deseado. Sin embargo, no insisto, tal vez su versión sigue siendo más conveniente, ya que no es necesario cambiar el gráfico. Pero la ventana de las propiedades del gráfico estará parpadeando :)

 
Meat:

Pues bien, primero puede activar a la fuerza la carta requerida. Compruebe también el nombre de la ventana principal del terminal para estar seguro. Debe contener el nombre del gráfico requerido. Sin embargo, no insisto, probablemente, su versión es todavía más conveniente, porque no hay necesidad de cambiar el gráfico. Pero la ventana de propiedades del gráfico aparecerá :).

Ciertamente, es posible activarlo. Pero, ¿cómo sincronizarlo? La actividad de la ventana puede ser desactivada por cualquier programa o por el propio usuario en cualquier momento. ¿Cómo se puede resolver esto? Es una forma muy inconveniente.

Sí. La ventana parpadea, pero muy rápidamente. Si el ordenador no está ocupado, es casi imperceptible.

LEOK:

Dame un caso de uso (código): ¡¿Cómo se puede conseguir esto a través de las propiedades del gráfico?!

Mira en mi WinUser32.mqh. Allí hay códigos de comando. No tienes que buscar en Espía. El resto ya lo conoces.

Andrei lo escribió correctamente:

jartmailru:
Simule el comando para abrir las propiedades del gráfico.
Espere el diálogo modal.
Encuéntralo.
Encuentre el artículo deseado.
Cierra el diálogo modal.
Sólo tendrás que cambiar la pestaña antes de encontrar el artículo.
 
Meat:

Pues bien, primero puede activar a la fuerza la carta requerida. Comprueba también el nombre de la ventana principal del terminal para estar seguro. Debe contener el nombre del gráfico requerido. Sin embargo, no insisto, probablemente, su versión es todavía más conveniente, porque no hay necesidad de cambiar el gráfico. Pero la ventana de las propiedades del gráfico estará parpadeando :)

Se desconoce la velocidad a la que MT actualizará el estado del botón. Por lo tanto, es conveniente insertar una pausa entre la activación de la ventana y la lectura del estado, que en algunos casos será insuficiente y la lógica del programa fallará. Así que lo que hace Vadim es en cierto modo una "forma industrial".