évenement clavier

cs_fignon Messages postés 4 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 24 septembre 2007 - 24 sept. 2007 à 11:52
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 24 sept. 2007 à 19:16
Bonjour à tous,
Je suis en train de développez une application ou j'aurais besoin d'éxecuter une action lorsque la touche entrée est enfoncée. J'ai utiliser le code suivant pour tester son bon fonctionnement :

4 réponses

cs_fignon Messages postés 4 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 24 septembre 2007
24 sept. 2007 à 11:59
Désolé pour l'erreur de manip mais voici la suite de mon premier post :

case WM_KEYDOWN:
                              
                     switch(wParam)
                     {
                             case 0x0D : MessageBox( HWND_DESKTOP, "Attention ", "Avertissement", MB_OK|MB_ICONWARNING);    
                    break ;
                     }       
                   
Cela fonctionne mais uniqument au lancement du programme.
Dès que j'appuie sur un bouton ou effectue une autre action le WM_KEYDOWN n'est plus "vu" par le programme.
Sauriez vous d'où provient cette erreur ?
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
24 sept. 2007 à 13:02
Oui quand tu sélectionnes un contrôle tu lui donne le focus clavier et donc l'événement est traité par la wndproc du contrôle. Pour récupérer quand même l'appui sur une touche tu dois sous-classer le contrôle (lui donner une nouvelle fonction WndProc, se fait avec SetWindowLongPtr et GWLP_WNDPROC, et CallWndProc pour rappeller l'ancienne), regarde MSDN ou SDK pour plus d'infos.
0
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
24 sept. 2007 à 13:50
Salut, sinon tu peux affectuer aussi par les hook clavier.

ciao et bon codage.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
24 sept. 2007 à 19:16
Salut,
Comme expliqué par juju12, ta fenêtre cessera de recevoir WM_KEYDOWN car elle n'a plus le focus. Ce dernier est passé dans un de tes controles. C'est tout à fait normal. Si tu veux intercepter juste la trouche Entrée, tu n'aura besoin ni de sous-classement ni de hook. J'ai déjà répondu à ce genre de questions plusieurs fois dans ce forum:
http://www.cppfrance.com/infomsg_CASE-WM_KEYDOWN-MARCHE-PAS-QUAND-JE-SUIS-DANS_998943.aspx
0
Rejoignez-nous