Détecter ESC dans une edit box...

Signaler
Messages postés
17
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
20 juillet 2007
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
-
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

14 réponses

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Sous classe ton Edit et intercepte le message WM_CHAR

ULARGE_INTEGERJokyQi=QI("Joky"
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

if(GetAsyncKeyState(VK_ESCAPE))
{
do some action
}
Messages postés
17
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
20 juillet 2007

je n'utilise pas la programmation en classe, j'utilise le borland c++ en ligne de commande (gratuit), je n'ai pas compri votre réponse désolé ...
Messages postés
17
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
20 juillet 2007

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...
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Ouai donc oublie ma réponse :)

ULARGE_INTEGERJokyQi=QI("Joky"
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
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)

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
17
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
20 juillet 2007

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+
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
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.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Tu trouveras ici l'explication du sous-classement:
http://www.cppfrance.com/infomsg_BLOQUER-TOUCHE-ENTREE_327459.aspx
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
A ce niveau-là, sous-classement ou hook, je dirais que c'est une question de gout :)

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
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.
Messages postés
17
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
20 juillet 2007

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+
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

pour utiliser getAsyncKeyState pourquoi ne pas faire un thread et une boucle ?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
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

_____________________________________
Un éditeur de ressources gratuit pour Windows