Détecter ESC dans une edit box...

orbb Messages postés 17 Date d'inscription dimanche 25 juillet 2004 Statut Membre Dernière intervention 20 juillet 2007 - 21 août 2006 à 12:43
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 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

14 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
21 août 2006 à 12:54
Sous classe ton Edit et intercepte le message WM_CHAR

ULARGE_INTEGERJokyQi=QI("Joky"
0
wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
21 août 2006 à 13:12
if(GetAsyncKeyState(VK_ESCAPE))
{
do some action
}
0
orbb Messages postés 17 Date d'inscription dimanche 25 juillet 2004 Statut Membre Dernière intervention 20 juillet 2007
21 août 2006 à 13:13
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é ...
0
orbb Messages postés 17 Date d'inscription dimanche 25 juillet 2004 Statut Membre Dernière intervention 20 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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
21 août 2006 à 14:29
Ouai donc oublie ma réponse :)

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

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
orbb Messages postés 17 Date d'inscription dimanche 25 juillet 2004 Statut Membre Dernière intervention 20 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+
0
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
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.
0
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
21 août 2006 à 15:49
Tu trouveras ici l'explication du sous-classement:
http://www.cppfrance.com/infomsg_BLOQUER-TOUCHE-ENTREE_327459.aspx
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
21 août 2006 à 16:01
A ce niveau-là, sous-classement ou hook, je dirais que c'est une question de gout :)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
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.
0
orbb Messages postés 17 Date d'inscription dimanche 25 juillet 2004 Statut Membre Dernière intervention 20 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+
0
wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
22 août 2006 à 11:24
pour utiliser getAsyncKeyState pourquoi ne pas faire un thread et une boucle ?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
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

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Rejoignez-nous