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

C++ Discussion :

détecter l'appui d'une touche de clavier dans un editbox C++


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut détecter l'appui d'une touche de clavier dans un editbox C++
    Bonjour, j'ai épluché un moteur de recherche (Google pour ne pas le citer), mais je n'ai pas trouvé comment (ou alors ça ne marche pas chez moi) détecter l'appui d'une touche de clavier dans un editbox.

    Je m'explique: j'ai créé un(ou une, je ne sais pas) editbox dans un DialogBox et j'aimerais que quand je clique sur la touche 'fin' (VK_END), le contenu de mon édit soit enregistré. C'est un multi ligne.
    J'ai essayé WM_KEYDOWN et WM_CHAR, mais ces messages ne sont pas envoyé (avec ce code):

    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
    17
    18
    19
    20
    21
    22
    case WM_CHAR: //ou WM_KEYDOWN
    {
    MessageBox(hDlg,"1",0,0);
        switch (wParam) 
        { 
            case VK_END://ne marche pas non plus avec VK_RETURN
    	{
    	     MessageBox(hDlg,"2",0,0);
                 GetWindowText(hEditReponce,sEditbox,lEditbox);
                 string reponce;
                 int i=0;
                 while(i!=lEditbox)
     	        {
    	     	    reponce[i]=sEditbox[i];//je remplis rechercheInter
      		    i++;
    		}
    		free(sEditbox);
    		break;
            }
        }
        return 0;
    }
    Ni l'une, ni l'autre des MessagesBox n'apparais (j'en conclus qu'il ne passe même pas par cette case).

    Quelqu'un pourra-t-il m’éclairer ? (Demandez-moi des précisions si il le faut.)

    Cordialement
    Simac.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    L'editbox prend la touche VK_END et la garde. Si tu veux que la touche ait en plus un effet hors de l'editbox, tu peux subclasser celle-ci pour lui faire envoyer un message spécial au parent quand elle reçoit VK_END (en plus de l'action normale qu'elle fait dessus).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    OK, merci, je vais essayé de trouver comment on subclasse l'édit.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Voila, j'ai trouvé, ça se trouve là dedans (pour ceux que ça intéresse) : http://cboard.cprogramming.com/windo...-edit-box.html, c'est la première réponse. Il sufit d'appeler subclass_the_edit_control(hEdit); après avoir créé l'édit.

    Merci à vous Médinoc !

    Simac.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Attention, le vieux SetWindowLong() est obsolète. Tu dois utiliser SetWindowLongPtr() et la constante GWLP_WNDPROC.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    D'accord, merci.

    Ps: AvecSetWindowLong(), les procédures marchaient quand même. Pourquoi est-il obsolète?

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Parce qu'il prend un LONG en paramètre, et dès que tu passes en 64 bits, tout pète parce que sous Windows (modèle 64 bits LLP64) les LONG restent sur 32 bits (donc, plus petits que des pointeurs).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Ah, ok, je ne savais pas. Merci pour cette précision!

    Simac

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment détecter l'appui sur une touche du clavier?
    Par Cygnus Saint dans le forum C++
    Réponses: 2
    Dernier message: 17/09/2009, 20h31
  2. Détection de l'appui sur une touche du clavier
    Par Oh!Tofocus dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/12/2008, 02h08
  3. Comment détecter l'appui sur une touche hors de l'application ?
    Par freezerhm dans le forum Windows Forms
    Réponses: 6
    Dernier message: 06/04/2008, 22h53
  4. appel d'une fonction à chaque appui sur une touche du clavier
    Par jonnyboy dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/09/2007, 16h32
  5. Récupération d'un appui sur une touche du clavier
    Par eddie5150 dans le forum MFC
    Réponses: 2
    Dernier message: 09/05/2007, 14h40

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