Touches de fonctions

cs_CHENRY Messages postés 16 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 7 avril 2003 - 11 févr. 2003 à 16:13
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 17 févr. 2003 à 09:49
En VC++6.0 avec les MFC, je souhaite employer les touches de fonction( F1 à F8) .Le but est:
Dans un ecran de saisie, quand l'user est sur un champ de saisie, il doit pouvoir appuyer sur une touche de fonction ( F5 par ex) pour que le programme lui ouvre une autre fenetre.

1er probleme: l'événement KEYDOWN , n'est pas associé à un champ mais à l'écran de saisie tout entier.
2eme probleme: j'ai essayé de m'en sortir, en testant l'évenement EN_CHANGE de mon champ de saisie, et de récupérer le dernier caractère tapé au clavier par une astuce du style

char a;
a = myField[myField.GetLength() -1];

je récupère bien un à un tous les caractères tapés, mais pas moyen d'intercepter une touche de fonction.

3eme probleme: J'ai essayé d'employer un champ de type RichEdit, mais quand je place un tel champ dans mon écran de saisie, celui-ci ne veut plus s'ouvrir.

Si cela vous inspire, merci.

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 févr. 2003 à 19:59
Salut,
fais une resource Accelerator et charge la.
Dans ta MSDN il y a explications.
ciao...
0
cs_CHENRY Messages postés 16 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 7 avril 2003
17 févr. 2003 à 09:12
Désolé, mais cette solution n'est pas celle que je recherche. Faire une ressource accélérator permet de créer un raccourci clavier dans le menu, or ce type de raccourci est inactif quand on a affaire à une fenetre munie de champs de saisie. Si je créé un accélérator pour exécuter un programme xx lors de l'appui sur la touche F5, ça marche lorsque je suis dans ma fenetre principale qui ne posséde pas de champ de saisie. Si ma fenetre a des champs de saisie, le controleur d'évenements du champ de saisie prend la main et ne répond pas à l'appui sur la touche F5. Il faudrait que je trouve un moyen de répondre à la question "Le dernier caractère tapé au clavier correspond il au code ASCII de la touche F5, lorsque je suis dans un champ de saisie ? On peut le faire en VB6 voir même en VBA, mais visiblement pas en VC++, et là je suis vraiment coincé.
Merci tout de même pour ta réponse.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 févr. 2003 à 09:49
En ce cas 2 solutions qui fonctionnent assurement.
Soit tu demarres un HOOK au chargement de ta fenetre par SetWindowsHookEx soit tu sous classes tes champs de saisie par
SetWindowLong(hedit, GWL_WNDPROC, (long) myproc)
des 2 manieres tu recuperes toutes les touches que tu veux.
ciao...
0
Rejoignez-nous