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 :

Filtrer le clavier


Sujet :

MFC

Vue hybride

whitebird001 Filtrer le clavier 30/11/2008, 19h08
PetitPapaNoël Bonjour, Bien sûr qu'il... 01/12/2008, 08h48
coincoin73 J'utilise une autre méthode... 01/12/2008, 09h32
Spout :alerte: Il faut bien être... 03/12/2008, 09h08
PetitPapaNoël J'ajouterais que la méthode... 03/12/2008, 09h38
coincoin73 C'est tout à fait exact. 03/12/2008, 14h24
whitebird001 OK merci. Je vais essayer... 02/12/2008, 00h30
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 78
    Par défaut Filtrer le clavier
    Bonsoir,

    Dans certaines phases de vie de mon application et notamment en saisie, je voudrais restreindre les touches "acceptées".

    Par exemple lorsqu'il s'agit de saisir uniquement des valeurs binaires, seules les touches '0' et '1' ne doivent être prises en compte.

    Faut-il passer systématiquement par un "keyboard hook"?

    Est-il possible de filtrer en passant par les MFC en surchargeant la méthode OnKeyDown par ex?

    Whitebird001

  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,

    Bien sûr qu'il est possible de filtrer les caractères saisis. Dans le cas du CEdit, deux méthodes sont décrites dans la FAQ :

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Par défaut
    J'utilise une autre méthode sans surcharge du CEdit, uniquement en interceptant le message EN_CHANGE.
    L'exemple ci-dessous montre la saisie d'un nombre réel positif.
    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
     
    void CMyClass::OnChangeMyCEdit() 
    {
        CString Cur;
        BOOL OnePoint = FALSE;
        m_cEdit.GetWindowText(Cur);
        if (Cur.GetLength() > 0) {
            for (int i = 0 ; i < Cur.GetLength() ; i++) {
                if ((Cur.GetAt(i) < '0'  || Cur.GetAt(i) > '9') &&
                    (Cur.GetAt(i) != '.' || OnePoint == TRUE)) {
                    m_cEdit.SetSel(i, i+1, FALSE);
                    m_cEdit.Cut();
                }
                if (Cur.GetAt(i) == '.') OnePoint = TRUE;
            }
        }
    }

  4. #4
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Citation Envoyé par coincoin73 Voir le message
    J'utilise une autre méthode sans surcharge du CEdit, uniquement en interceptant le message EN_CHANGE.
    L'exemple ci-dessous montre la saisie d'un nombre réel positif.

    Il faut bien être conscient que l'exemple que tu donnes ne filtres pas les touches mais filtre l'affichage.
    Peut-être est-ce ce qui convient le mieux dans ce cas, mais un filtrage graphique n'est pas la même chose qu'un filtrage clavier.
    Juste pour éviter tout quiproquo

  5. #5
    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
    J'ajouterais que la méthode de coincoin73 a un petit inconvénient : si le texte du CEdit est modifié, la méthode OnChangeMyCEdit est relancée dans la foulée, alors qu'on pourrait s'en passer.
    C'est du moins ce qu'il me semble ; à vérifier...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Par défaut
    Citation Envoyé par PetitPapaNoël Voir le message
    J'ajouterais que la méthode de coincoin73 a un petit inconvénient : si le texte du CEdit est modifié, la méthode OnChangeMyCEdit est relancée dans la foulée, alors qu'on pourrait s'en passer.
    C'est du moins ce qu'il me semble ; à vérifier...
    C'est tout à fait exact.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 78
    Par défaut
    OK merci. Je vais essayer d'intégrer ça dans mon code.

Discussions similaires

  1. Réponses: 23
    Dernier message: 16/10/2014, 18h39
  2. [Turbo Pascal] Entrée au clavier sous forme ******
    Par Upal dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 15/02/2003, 14h42
  3. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55
  4. Cherche Nom des touches du clavier
    Par juan64 dans le forum C++Builder
    Réponses: 8
    Dernier message: 23/07/2002, 19h11
  5. Vider le buffer du clavier
    Par flavien tetart dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 12/07/2002, 08h35

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