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 :

[MFC] la touche entrée


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Points : 46
    Points
    46
    Par défaut [MFC] la touche entrée
    Bonjour,

    je voudrai récupérer l'appui sur la touche "entrée" dans l'une de mes classes qui hérite de CEdit. Cela ne fonctionne pas et je ne vois pas pourquoi. Voici ce que je fais :

    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
     
    void CEditCustomizable::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    	if (nChar == VK_RETURN)
    	{
    		MessageBox("RETURN");
    	}
    	else 
    	{
    		MessageBox("pas RETURN");
    	}
    	if (nChar == VK_SHIFT)
    	{
    		MessageBox("SHIFT");
    	}
    	else 
    	{
    		MessageBox("pas SHIFT");
    	}
    	CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
    	}
    Quand ensuite j'appui sur une touche autre que shift et entrée cela m'affiche :
    pas RETURN
    pas SHIFT

    si c'est shift cela m'affiche :
    Pas RETURN
    SHIFT

    si c'est entrée cela m'affiche :
    absolument rien!!!

    J'en déduis que l'appui sur entrée n'est pas détecté par OnKeyDown... Comment peut on détecter l'appui sur entrée dans ce cas?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    fais ton traitement dans WM_CHAR ..
    et voir ce post dans la faq:
    http://c.developpez.com/faq/vc/?page...hiftorCtrlDown

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Points : 46
    Points
    46
    Par défaut ça ne marche pas non plus
    J'ai repris et adapté ton code et ça ne marche pas non plus.
    que ce soit dans OnKeyDown ou OnChar l'appui sur entrée n'est pas détecté alors que pour Ctrl ou Shift ça marche dans OnKeyDown.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    rajoute ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UINT CMyEdit::OnGetDlgCode() 
    {
    	// TODO: Add your message handler code here and/or call default
     
    	return CEdit::OnGetDlgCode()+VK_RETURN;
    }
    note c'est un message a rajouter avec classwizard :WM_GETDLGCODE

  5. #5
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Points : 46
    Points
    46
    Par défaut
    C'est bon ça marche. Aussi bien dans OnKeyDown que dans OnChar d'ailleurs.

    Une dernière petite question cependant :
    Quel est l'intéret de faire :

    #define IsReturnDown()( (GetKeyState(VK_RETURN) & (1 << (sizeof(SHORT)*8-1))) != 0 )
    et ensuite d'utiliser cette fonction plutôt que de faire :
    if (nChar == VK_RETURN)
    (tout simplement)

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    reponse aucun ,a part se faire plaisir

  7. #7
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Points : 46
    Points
    46
    Par défaut merci
    je te souhaie donc bien du plaisir.
    Merci pour ton aide.

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

Discussions similaires

  1. Bloquer la touche entrée (sans MFC)
    Par Taiby dans le forum Windows
    Réponses: 8
    Dernier message: 10/10/2010, 09h38
  2. Touche entrée
    Par Neptune8 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/11/2004, 16h52
  3. Touche "Entrée" et fenetre modale
    Par pascalT dans le forum Composants VCL
    Réponses: 5
    Dernier message: 21/07/2004, 16h57
  4. Réponses: 4
    Dernier message: 23/05/2004, 17h14
  5. touche entrée dans formulaire
    Par pram dans le forum XMLRAD
    Réponses: 8
    Dernier message: 15/04/2003, 09h13

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