Touche return sur contrôle EDIT [Résolu]

Messages postés
107
Date d'inscription
lundi 7 février 2011
Dernière intervention
17 février 2018
- 8 mai 2011 à 17:32 - Dernière réponse :
Messages postés
107
Date d'inscription
lundi 7 février 2011
Dernière intervention
17 février 2018
- 9 mai 2011 à 08:09
Bonjour,
J'ai une fenêtre principale et une fenêtre enfant, ma fenêtre enfant est un simple contrôle "EDIT" créé avec CreateWindow("EDIT",?..). Je voudrais tout simplement récupérer le contenu de ce contrôle lorsque l'utilisateur appuie sur la touche "ENTER" (relâchement par exemple de VK_RETURN). Or dans mon programme principal je ne reçois pas les messages de type WM_CHAR, ni WM_KEYUP, ni WM_KEYDOWN car au moment où l'utilisateur appuie sur la touche "ENTER", c'est le contrôle "EDIT" qui a le focus (ce qui est normal puisqu'il est entrain de saisir des infos) et non pas le programme principal. Et par ailleurs je n'ai pas de callback spécifique à la fenêtre enfant puisque c'est une classe de fenêtre prédéfinie (EDIT). Je m?en suis provisoirement sorti en faisant dans mon programme principal un SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)hkproc, n0instance, 0) dans la callback de laquelle je ne filtre que les touches "ENTER". Mais cette solution (qui marche) me paraît lourde et il doit bien y avoir une solution plus élégante pour être averti que l'utilisateur a appuyé sur la touche "ENTER".
Merci pour vos suggestions
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Dernière intervention
19 mars 2015
8 mai 2011 à 18:41
3
Merci
le sous classement repondra à tes attentes :
http://chgi.developpez.com/windows/subclassing/

Merci mogwai93 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de mogwai93
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
8 mai 2011 à 18:52
0
Merci
Salut,
On peut se passer de sous-classement dans ce genre de cas. Regarde mon code source:
UTILISATION-TOUCHES-TAB-ENTREE-ECHAP-DANS-FENETRE-WIN32
Commenter la réponse de racpp
Messages postés
107
Date d'inscription
lundi 7 février 2011
Dernière intervention
17 février 2018
8 mai 2011 à 20:29
0
Merci
To -> mogwai93: Effectivement, le sous-classement répond complètement à ma question.
TO -> racpp: J'ai regardé ton code, mais j'ai l'impression que ça marche chez toi parce que l'appui sur la touche ENTER se comporte par défaut comme un clic sur le bouton. Il suffit alors de filtrer le "IDOK". Mais dans mon cas je n'ai aucun bouton (j'ai juste le contrôle EDIT) j'ai quand même à tout hasard essayé de tester le IDOK mais ça ne fonctionne pas.
Merci
Commenter la réponse de ArthurAuguste
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
8 mai 2011 à 20:40
0
Merci
Pour éviter le sous-classement, on met un bouton invisible qui sera traité comme un bouton normal. Dans le traitement du clic sur le bouton, on met le code à exécuter quand ENTER est actionné. C'est une astuce qui permet d'alléger et simplifier le code et fonctionne parfaitement.
Commenter la réponse de racpp
Messages postés
107
Date d'inscription
lundi 7 février 2011
Dernière intervention
17 février 2018
9 mai 2011 à 08:09
0
Merci
J'avais vu l'histoire du bouton par défaut, mais dans mon cas le bouton par défaut, même invisible, n'est pas très ergonomique car je balade sans arrêt mon contrôle EDIT dans une grille, et la solution du bouton par défaut m?oblige à balader un sous-ensemble plus important que le contrôle EDIT, sous-ensemble qui doit inclure aussi le bouton par défaut.
Merci
Commenter la réponse de ArthurAuguste

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.