orbb
Messages postés17Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention20 juillet 2007
-
21 août 2006 à 12:43
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
22 août 2006 à 14:28
Bonjour,
j'ai crée une boite de dialogue avec des editbox, et j'aimerai pouvoir détécter les touches ESC et ENTREE pour pouvoir executer des actions (l'équivalent de l'appui sur OK et ANNULER)
quelle est la meilleur methode ?
j'ai utilisé RegisterHotKey avec WM_HOTKEY mais ca detecte meme si j'appui sur ENTREE dans une autre fenetre, et ca me parai trop lourd pour faire ce que je recherche, n'y a til pas une autre methode plus simple ? (j'ai aussi essayé avec WM_KEYDOWN, mais ca ne detecte rien...)
merci
orbb
Messages postés17Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention20 juillet 2007 21 août 2006 à 13:16
pour GetAsyncKeyState, je croi que c'est pour de l'attente active, alors que je recherche simplement un message windows qui m'indique que la touche ESC a été appuyé, a n'importe quel endroi de mon programme...
Vous n’avez pas trouvé la réponse que vous recherchez ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 21 août 2006 à 14:41
GetAsyncKeyState retourne immédiatement, seulement on ne sait pas quand l'appeler
Le code suivant correspond exactement à ce que tu veux faire:
HOOK DE ENTER SUR DIALOGBOX (WIN32)
orbb
Messages postés17Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention20 juillet 2007 21 août 2006 à 15:28
effectivement ca marche avec les hook, merci ^^
mais ca me parai etre impeu trop compliqué pour une tache aussi simple, n'existe pas un autre moyen avec les messages dans la procedure de la boite de dialogue ?
en fait ce que je voudrai faire, c'est associer la touche ENTREE avec le boutton OK, et ce meme si l'utilisateur est sur une edit box, est ce que c'est possible ?
a+
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 21 août 2006 à 15:46
Salut,
A mon avis, la meilleure solution pour toi est le sous-classement. Ca n'a rien à voir avec les classes C++. Tu déclares le HWND de ton bouton en global. Tu crées une petite procédure de sous-classement commune à tous les EditBoxs. Dans cette procédure, tu interceptes le message WM_KEYDOWN. S'il s'agit de la touche VK_RETURN tu envoies un message de clic sur le bouton.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 21 août 2006 à 16:14
Personnellement, je préfère le sous-classement dans la majorité des cas. C'est en quelque sorte un hook applicable à chaque contrôle individuellement ou en groupes.
orbb
Messages postés17Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention20 juillet 2007 21 août 2006 à 18:24
merci racpp pour ta proposition (sous classement), en fait j'ai essayé avec les hook et j'ai fini de l'implementer dans mon programme... donc je ne pense pas changer vu que ca marche assez bien ;)
merci a tous pour vos réponses... a+
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 22 août 2006 à 14:28
Parce que c'est moche, et ca marchera pas. En plus, dans ta boucle il faudra un Sleep (sinon elle utilisera toute la CPU). Dans ce cas t'es même pas sur d'appeler GetAsyncKeyState au bon moment, donc c'est pas bon