IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Gestion des evnmts clavier sous Visual c++ sans MFC


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Gestion des evnmts clavier sous Visual c++ sans MFC
    Salut tout le monde, voilà je me suis lancé dans un projet de synthetiser a l'IUT mais j'ai quelques problèmes pour intercepter les évènements clavier dans mon programme, sachant que celui-ci dispose d'une fenetre de dialogue avec différents composants. Apparemment, c'est les composants qui ont le focus par défaut, mais il ne s'agit pas que de çà car si on le mettait sur la fenetre, au premier click sur un des composants ceux-ci le reprendraient non ?... J'avais lu quelque part qu'il existe une fonction ou une routine permettant à la boite de dialogue d'intercepter tous les messages à destination du programme, qqn pourrait me la rappeler ?

    Une fois ce pb resolu, théoriquement je n'aurais plus qu'à utiliser un switch de ce genre pour intercepter les messages clavier, n'est-ce pas ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
       case WM_COMMAND:
          Select=LOWORD(wParam);
          switch(Select)
          {
          case IDCANCEL:
             EndDialog(Dlg,Select);
             PostQuitMessage(0);
             return TRUE; 
          }
       case WM_CHAR:
       ....
       case WM_KEYUP:
       ...
       case WM_KEYDOWN:
       ...
    Merci de votre aide
    A+

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Salut, je pense avoir trouvé mais merci quand même à ceux qui m'ont lu

    PS : il y aurait deux manières de le faire d'après ce que j'ai pu voir, soit un sous-classement, à effectuer sur tous les controles de ma fenetres (trop), soit un hook sur le WH_KEYBOARD (bcp mieux et c sque j'ai choisis du coup , voir reply de nico-pyright sur http://www.developpez.net/forums/vie....php?p=1501293 pour les interessessés...

    A+

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Citation Envoyé par pj69100
    J'ai lu qqpart que le WH_KEYBOARD repondait a la fois aux WM_KEYUP et WM_KEYDOWN, ce qui expliquerait donc la chose, mais comment faire pour differencier le KEYUP du KEYDOWN dans la fonctionIntercepteClavier() dans ce cas ?

    Il s'agit peut-être du bit 31 de LParam (cf ce que j'ai trouvé par hasard tout a lheure :
    // WParam contient le code de touche virtuel
    // Le bit 31 de LParam est à 0 pour un KeyDown et à 1 pour un KeyUp),
    le pb c'est que je suis un rgand débutant en C++, et je ne sais pas comment lire seulement le 31° bit du LPARAM, pourrais-tu m'eclairer ?
    Merci d'avance
    Salut,
    Il te suffit d'utiliser un masque binaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (lParam & 2147483648) // bit 31 positionné à 1

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Ha super, merci bien

    au passage, un truc qui n'a rien a voir mais... comment faire pour changer la valeur par défaut d'un textbox inséré dans la dialogue (par l'editeur de VC++). Jme pose la question en fait parce qu'après avoir fait un tour dans les propriétés je n'y ai pas trouvé de champs Value ou similaire...
    A+

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Utilise SetWindowText dans le initdialog pour fixer la valeur par défaut

Discussions similaires

  1. [SDL] Gestion des touches claviers problématique
    Par Invité4 dans le forum SDL
    Réponses: 3
    Dernier message: 13/10/2006, 21h15
  2. Gestion des touches clavier
    Par bourinator dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 18/06/2006, 16h19
  3. Gestion des images interactives en visual c++
    Par mastersabin dans le forum MFC
    Réponses: 9
    Dernier message: 10/03/2006, 15h07
  4. Inclure des fonction matlab sous visual c++
    Par petdelascar dans le forum MFC
    Réponses: 3
    Dernier message: 21/11/2005, 17h03
  5. Gestion des packages RPM sous Mandrake
    Par Noki dans le forum Mandriva / Mageia
    Réponses: 10
    Dernier message: 29/03/2004, 19h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo