détecter la touche "entrée" dans un edit box [VC++6 / API Win32] - C++ - Programmation
Marsh Posté le 17-10-2002 à 18:15:15
il y a le message Wm_KEYDOWN je crois, et après, tu recherche si le code du caractère tapé est celui de la touche entré...
Marsh Posté le 17-10-2002 à 19:25:14
salut, j'y ai bien pensé oui, le problème c'est que WM_KEYDOWN ne me fournit pas le handle de l'objet dans lequel j'ai tapé entrée... donc si j'ai 2 edit box par exemple, je rique de taper dans une et valider la deuxième
J'ai pensé aussi à EN_CHANGE qui détecte si le contenu d'un edit a changé en me renvoyant l'handle de l'édit, mais je sais pas si la touche entrée est considérée comme un changement et de toute façons ça ne me renvoie pas quelle touche a été pressée, ça ne correspond donc pas non plus.
Bref doit bien exister un message qui corresponde à ce que je cherche mais j'ai pas encore trouvé... Please help !!!
En tous les cas merci pour ta réponse
Marsh Posté le 18-10-2002 à 08:16:32
Cool Coyote a écrit a écrit : Salut! La question est dans le titre mais je vais apporter kkes précisions. Actuellement ce que j'écris dans mon edit (1 seule ligne), je peux le valider par un bouton. Je désire supprimer ce bouton et valider plutôt par la touche "entrée", mais je n'ai rien trouvé de concluant. Si quelqu'un a une piste, ce serait top. PS : pas de MFC ici, c'est tout en API Thx !! |
Il faut que tu modifies les propriétés de ton edit grâce à la fonction SetWindowLong.
Code :
|
A chaque fois que ton edit recoit un message la fonction editProc va être appelée et t'as plus qu'a gérer la touche entrée. oldProc est l'ancienne fonction qui était associée à ton edit.
Code :
|
Marsh Posté le 18-10-2002 à 09:49:17
ahhhhhhh !!!! merci à toi !!!
Je désespérais un peu j'avoue
J'ai pas le code sous les yeux là mais d'ici ce soir je vais tester tout ça !
Merci encore
Marsh Posté le 22-02-2003 à 16:33:11
J'ai créé un edit dans ma dialog, j'y ai géré avec la méthode ci-dessus l'appui sur touche entrée. Seulement il n'y a pas de bouton avec la propriété "Default" et donc lorsque j'appui sur entrée et bien ça fait bien ce que je veux mais j'ai droit à un beep à chaque fois !
Comment faire pour éviter ça ?
Marsh Posté le 22-02-2003 à 18:20:13
Citation : salut, j'y ai bien pensé oui, le problème c'est que WM_KEYDOWN ne me fournit pas le handle de l'objet dans lequel j'ai tapé entrée |
Lorsque tu recois un evenement, tu recois le handle de la fenetre concernee ...
Code :
|
Citation : Comment faire pour éviter ça ? |
ca doit venir du fait qu'il appelles quand meme oldProc alors qu'il a traite l'evenement.
Ton edit fait alors le traitement normal. Il doit pas etre multiline, donc quand tu fais <entree>, il beep parceque tu peux pas faire multiline.
Donc dans ce cas faut renvoyer 0 et non pas appeler oldProc.
Vaut mieux utiliser WM_CHAR aussi. J'ai pas testé, mais je suis pas sûr que WM_KEYDOWN marche pour la touche entree du pad numerique.
Marsh Posté le 15-07-2011 à 15:44:35
LRESULT CALLBACK EditProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_CHAR:
if(wParam == VK_RETURN) /* Si il detecte la touche Entrer*/
{
}
}
return CallWindowProc(oldProc, hwnd, message, wParam, lParam);
}
Marsh Posté le 17-10-2002 à 13:06:44
Salut!
La question est dans le titre mais je vais apporter kkes précisions.
Actuellement ce que j'écris dans mon edit (1 seule ligne), je peux le valider par un bouton. Je désire supprimer ce bouton et valider plutôt par la touche "entrée", mais je n'ai rien trouvé de concluant.
Si quelqu'un a une piste, ce serait top.
PS : pas de MFC ici, c'est tout en API
Thx !!