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]: prise en compte du clavier


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 43
    Points : 30
    Points
    30
    Par défaut [MFC]: prise en compte du clavier
    bonjour

    Je suis en train de monter une ihm où j'aimerais prendre en compte des touches claviers (par exemple la touche esc ferme l'application). Pour cela, j'ai ouvert class Wizard et j'ai utilisé le message WM_KEYDOWN relatif à la classe CTestMfcView, voilà ce que j'obtiens: (dans cette fonction la sélection d'une touche provoque l'écriture d'un message dans une zone éditable):

    void CTestMfcView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
    // TODO: Add your message handler code here and/or call default
    CEdit * edit = (CEdit *) GetDlgItem(IDC_EDIT1);
    edit->SetWindowText(_T("touche appuyée!"));
    CFormView::OnKeyDown(nChar, nRepCnt, nFlags);
    }


    Or lorsque je tape sur une touche, il ne passe rien :-(. Quel détail ai je oublié? :-(.
    Merci d'avance :-).

    benoit

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    salut,
    je crois bien que pour que ça marche, ta fonction qui intercepte le message ON_KEY_DOWN doit être dans la classe de ton EditBox (que tu dois donc créer si tu utilises simplement CEdit) et non dans celle de la fenêtre.

    Bonne chance si tu veux plus de détails demande

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    Justement, cela amène d'autres questions . L'ID de mon edit box est IDC_EDIT1, j'ai donc regardé dans class wizard quelle fonction de message on pouvait créer et il n'y a rien relatif à WM_KEYDOWN. Or comme je n'ai pas créé de CEdit (cela est fait automatiquement à partir du fichier ressource), je ne vois pas comment je pourrais rajouter une fonction "à la main". De plus comment spécifier que cette fonction répond à un message WM_KEYDOWN relatif à mon editbox?
    Si tu peux continuer à éclairer ma lanterne
    à +

    benoit

    PS j'utilise la version 6.0 de visual

  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
    salut ,
    a partir de la boite de dialogue ou form tu ne peux pas trapper le message sur l''id de l'edit .
    pour le faire genere une classe avec classwizard derivee de cedit
    selectionne la classe dans classwizard et le message wm_keydown est dispo pour cette classe.


  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    ok, cela semble marcher, cependant, y a t'il une possibilité pour que j'ajoute dans ma ressource IDD_TESTMFC_FORM un objet de cette classe dérivée ou faut il que j'entre les paramètres de cet objet "à la main"? Dans le dernier cas, dans quel fonction de CMainFrame, CTestMfcApp ou CTestMfcView faut il que je les rentre?

  6. #6
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    Re,

    y a t'il une possibilité pour que j'ajoute dans ma ressource IDD_TESTMFC_FORM un objet de cette classe dérivée
    oui tout à fait, tu as créé par exemple une classe CEditBase qui dérive de CEdit.
    Pour afficher dans ton formView un CEditBase plutôt qu'un CEdit, tu crées d'abord un CEdit standard avec le Ressource View puis dans la déclaration de ton fichier .h, tu remplaces simplement CEdit par CEditBase et tu mets #include "EditBase.h" en entête.

    Bonne chance

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    De quel .h parles tu ? Car je ne vois aucune déclaration de CEdit que ce soit dans le .h relatif à la vue, au document, au ressource ou à la fenêtre elle même. J'utilise visual C++ 6.0. Peut être que cette option est dans le .net et pas dans le 6.0 ou alors je n'ai pas compris quelque chose?

  8. #8
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    salut,
    désolé de pas répondu plus tôt mais j'étais en week end, j'espère que tu as trouvé la solution depuis.

    Dès fois que, voici un peu plus de détails.

    Les déclarations de CEdit (ou du style) dont je ne parle qui doivent être dans le fichier de ta boite de dialogue MaBoiteDlg.h n'apparaissent que si tu crées avec class wizzard une variable membre de controle qui te permet ensuite de controler ton controle.

    Tu dois donc créées cette variable de contrôle et tu auras la déclaration voulue dans le fichier MaBoiteDlg.h

    Bonne chance

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    ça marche, merci pour les conseils

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

Discussions similaires

  1. Valeur au clavier non prise en compte
    Par benstan dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 03/06/2011, 11h39
  2. [VB.NET] [DataGrid] [TableStyles] Pb de prise en compte
    Par Misterburma dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/04/2005, 14h00
  3. [netbeans] Modifications non prises en compte
    Par nadass dans le forum NetBeans
    Réponses: 6
    Dernier message: 07/04/2005, 13h49
  4. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57
  5. Prise en compte des contraintes
    Par potanie dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 05/11/2004, 10h00

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