-
erreur Send Message
Bonjour,
j'essaie de simuler le click sur un bouton d'une barre d'outils, j'ai le handle de ma fenêtre,l'id de mon controle, j'envoie le message suivant:
Code:
SendMessage(handle, WM_COMMAND, idCtrl, 0);
mais au lieu d'activer la fonctionnalité associé au bouton, mon code annule l'affichage de la barre d'outils!!!
je ne comprends pas :arf:
help! :help:
-
J'ai testé ton code sur un ID de menu il fonctionne.
mais peut-être assayer de la façon suivante :
Code:
SendMessage(handle, WM_COMMAND, MAKEWPARAM(idCtrl,0) ,0);
-
je viens d'essayer, pareil :triste:
il faut dire aussi que j'ai obtenu l'idée du controle avec spy++, mais je suis sûre que je ne me suis pas trompée!!
je vais vérifier encore...
merci en tout cas :merci:
-
Quand le message provient d'un contrôle, LPARAM est censé contenir le HWND de celui-ci...
Et s'il s'agit d'un bouton, WPARAM doit contenir BN_CLICKED comme notification (bon d'accord, BN_CLICKED vaut zéro).
Trucs à savoir: Sous Windows, une barre d'outils "toolbar" standard est gérée en tant qu'un seul contrôle (il en est différemment pour les toolbars GTK+). Quand un bouton de toolbar Windows est cliqué, elle envoie un mesage WM_NOTIFY avec le code NM_CLICK à la fenêtre parent.
-
Alors le WPARAM n'est pas fixe??
parce que ce que j'ai fait pour l'avoir, c'est de cliquer sur le bouton, et de regarder les messages échangés avec spy++, et alors dans tous mes essais, j'ai remarqué qu'un WM_NOTIFY est envoyé avec le même idCtrl...
Connaissez vous un moyen de récupérez le handle du controle alors?
:merci:
-
Si tu as l'id et le contrôle de la fenêtre parent, tu peux récupérer le handle du contrôle.