Comment déterminer si le bouton de défilement est enfoncé ou non et, le cas échéant, l'enfoncer ! - page 4

 
Zhunko:

Si Leo a été attentif, le lien vers la bibliothèque est mon WinUser32.mqh. Il dispose de toutes les commandes et fonctions nécessaires. Il n'est pas nécessaire d'exporter quoi que ce soit.


33017 - supprimer/régler l'autoscroll ;
ou autre chose ?
 
LEOK:

33017 - supprimer/régler l'autoscroll ;
ou autre chose ?
Spy++ est une aide.
Prenez les informations directement à la source.
 
LEOK:

33017 - supprimer/régler autoscroll ;
ou autre chose ?
Pour le contrôle, oui. Pour le statut, vous avez besoin des propriétés du graphique.
 

Personnellement, je ne comprends toujours pas quel est le problème de l'utilisation de TB_GETSTATE. De quelle activité de fenêtre parlions-nous ? Il s'agit d'un message de fenêtre normal envoyé au contrôle, tout comme WM_GETTEXT, BM_GETSTATE, etc. J'ai toujours utilisé ces messages - aucun problème. Et l'application reçoit des informations des contrôles avec ces messages de la même manière.

Et cela n'a pas d'importance si la fenêtre est active ou non.

 
Meat:

Personnellement, je ne comprends toujours pas quel est le problème de l'utilisation de TB_GETSTATE. De quelle activité de fenêtre parlions-nous ? Il s'agit d'un message normal de la fenêtre envoyé au contrôle, tout comme WM_GETTEXT, BM_GETSTATE, etc. J'ai toujours utilisé ces messages - aucun problème. Et l'application reçoit des informations des contrôles avec ces messages de la même manière.

Il importe peu que la fenêtre soit active ou non.

Ce panneau ne fonctionne qu'avec le graphique actif. Que se passera-t-il si, au moment précédant l'envoi du message, l'activité de la fenêtre change ? Une autre fenêtre de graphique devient active. En conséquence, vous obtiendrez la position du bouton pour l'autre fenêtre plutôt que pour la vôtre. Dans ce cas, comment synchroniser l'activité de la fenêtre pour laquelle on veut obtenir la position du bouton avec le message à envoyer ? Si cela n'est pas fait, il y aura beaucoup d'erreurs inattendues. Même avec DLL, ce n'est pas évident.

Il est plus facile et plus fiable de l'obtenir par le biais des propriétés graphiques.

 
Zhunko:

Ce panneau ne fonctionne qu'avec l'horaire actif. Que se passe-t-il si l'activité de la fenêtre change un instant avant l'envoi du message ? Une autre fenêtre de graphique devient active. En conséquence, vous obtiendrez la position du bouton pour une autre fenêtre plutôt que pour la vôtre. Dans ce cas, comment synchroniser l'activité de la fenêtre pour laquelle on veut obtenir la position du bouton avec le message à envoyer ? Si cela n'est pas fait, il y aura beaucoup d'erreurs inattendues. Même avec DLL, ce n'est pas évident.

Il estplus facile et plus fiable de l'obtenir par le biais des propriétés graphiques.


S'il vous plaît, donnez-moi un exemple d'utilisation (code) : comment l'obtenir via les propriétés du graphique? !
 
LEOK:
S'il vous plaît, donnez moi un exemple d'utilisation (code) : comment obtenir ceci à travers les propriétés du graphique ? !
Imitez la commande pour ouvrir les propriétés du graphique.
Attendez le dialogue modal.
Trouvez-le.
Trouvez l'élément requis.
Fermez la boîte de dialogue modale.

Quelles questions vous avez...
 
Zhunko:

Ce panneau ne fonctionne qu'avec l'horaire actif. Que se passe-t-il si l'activité de la fenêtre change un instant avant l'envoi du message ? Une autre fenêtre de graphique devient active. En conséquence, vous obtiendrez la position du bouton pour une autre fenêtre plutôt que pour la vôtre. Dans ce cas, comment synchroniser l'activité de la fenêtre pour laquelle on veut obtenir la position du bouton avec le message à envoyer ? Si cela n'est pas fait, il y aura beaucoup d'erreurs inattendues. Même avec DLL, ce n'est pas évident.

Il est plus facile et plus fiable de l'obtenir par le biais des propriétés des cartes.

Eh bien, vous pouvez forcer l'activation de la carte requise d'abord. Et également pour des raisons de fiabilité, vérifiez le nom de la fenêtre principale du terminal. Il doit contenir le nom du graphique souhaité. Cependant, je n'insiste pas, votre version est peut-être encore plus pratique, car vous n'avez pas besoin de changer de tableau. Mais la fenêtre des propriétés du graphique clignotera :)

 
Meat:

Eh bien, vous pouvez d'abord activer de force la carte requise. Vérifiez également le nom de la fenêtre principale du terminal pour être sûr. Il doit contenir le nom du graphique requis. Cependant, je n'insiste pas, probablement, votre version est encore plus pratique, car il n'y a pas besoin de changer de tableau. Mais la fenêtre des propriétés du graphique s'affichera :).

Il est certainement possible de l'activer. Mais comment le synchroniser ? L'activité de la fenêtre peut être désactivée par tout programme ou par l'utilisateur lui-même à tout moment. Comment cela peut-il être résolu ? C'est un moyen très peu pratique.

Oui. La fenêtre clignote, mais très rapidement. Si l'ordinateur n'est pas occupé, c'est presque imperceptible.

LEOK:

Donnez-moi un cas d'utilisation (code) : comment pouvez-vous obtenir cela via les propriétés du graphe ? !

Regardez dans mon WinUser32.mqh. Il y a des codes de commande. Vous n'avez pas besoin de regarder dans Spy. Vous connaissez déjà le reste.

Andrei l'a écrit correctement :

jartmailru:
Simulez la commande pour ouvrir les propriétés du graphique.
Attendez la boîte de dialogue modale.
Trouvez-le.
Trouvez l'élément souhaité.
Fermez la boîte de dialogue modale.
Seulement vous devrez changer d'onglet avant de pouvoir trouver l'objet.
 
Meat:

Eh bien, vous pouvez d'abord activer de force la carte requise. Vérifiez également le nom de la fenêtre principale du terminal pour être sûr. Il doit contenir le nom du graphique requis. Cependant, je n'insiste pas, probablement, votre version est encore plus pratique, car il n'y a pas besoin de changer de tableau. Mais la fenêtre des propriétés du graphique clignotera :)

La vitesse à laquelle MT mettra à jour l'état du bouton est inconnue. Il est donc souhaitable d'insérer une pause entre l'activation de la fenêtre et la lecture de l'état, qui dans certains cas sera insuffisante et la logique du programme échouera. Ce que fait Vadim est donc en quelque sorte une "méthode industrielle".