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 :

Problème sur Renomer dans un CTreeCtrl


Sujet :

MFC

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Par défaut Problème sur Renomer dans un CTreeCtrl
    Bonjour à tous, je suis nouveau sur le forum.

    Voilà, j'ai un treectrl myTree definie dans le ressource,

    quand je fais F2 , j'obtient un CEdit et je peux renomer l'item du tree.
    je veux empécher l'utilisateur de taper sur le touche +,*,-,/,&,\

    Alors j'ai utilisé 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
    {
       if (pMsg->message == WM_KEYDOWN &&
          pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
       {
          CEdit* edit = myTree.GetEditControl();
          if (edit)
          {
             edit->SendMessage(WM_KEYDOWN, pMsg->wParam, pMsg->lParam);
             return TRUE;
          }
       }
       if (pMsg->message == WM_KEYDOWN)
          switch(pMsg->wParam)
       {
          case VK_DIVIDE:
             return TRUE;
             break;
          case VK_MULTIPLY:
             return TRUE;
             break;
          case VK_ADD :
             return TRUE;
             break;
          case VK_SUBTRACT :
             return TRUE;
             break;
          case 49 : //key "&"
             return TRUE;
             break;
          case 0x38 : //key: "\"
             return TRUE;
             break;
          default:
             break;
       }
       return CDialog::PreTranslateMessage(pMsg);
    }
    le problème avec mon code ci dessus c'est que l'utilisateur ne peux plus acceder au touche 1(&) au dessus de A et au touche 8(\,_) au dessus de U, à cause de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          case 49 : //key "&"
             return TRUE;
             break;
          case 0x38 : //key: "\"
             return TRUE;
             break;
    auriez vous d'autre solution à me proposer? merci d'avance pour vos réponse

    Remarque: j'ai déjà essayé de creer une classe héritant cedit et capturer l'event onchar mais j'ai eu un autre problème

    Scottmada

  2. #2
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Bonjour,

    Si je comprends bien, il faut que tu testes, dans les cas qui te posent problème, que la touche "Maj" n'est pas enfoncée. Pour cela, tu peux utiliser la macro IsShiftDown() proposée par Farscape dans la FAQ.

    Ensuite, intègre cette macro dans ton code de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	case 49 : //key "&"
    		if (IsShiftDown())
    			break;
     
    		return TRUE;
     
    	case 0x38 : //key: "\"
    		if (IsShiftDown())
    			break;
     
    		return TRUE;

  3. #3
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    interceptes plutot le message WM_CHAR qui donne un code ASCII au lieu de WM_KEYDOWN.

    d'ailleurs un controle EDIT utilises ce message pour la saisie. (WM_KEYDOWN c'est uniquement pour les touches spéciales comme les flèches par ex)

    @+

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

Discussions similaires

  1. problème sur selection dans un DataGridView
    Par gueulederack dans le forum VB.NET
    Réponses: 16
    Dernier message: 10/01/2012, 09h46
  2. Réponses: 4
    Dernier message: 11/04/2007, 12h49
  3. Réponses: 1
    Dernier message: 13/12/2006, 21h31
  4. Réponses: 2
    Dernier message: 11/01/2006, 15h49
  5. Problème: condition sur formulaire dans requête
    Par decour dans le forum Access
    Réponses: 1
    Dernier message: 17/10/2005, 23h27

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