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

Windows Discussion :

Bloquer la touche entrée (sans MFC)


Sujet :

Windows

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Points : 83
    Points
    83
    Par défaut Bloquer la touche entrée (sans MFC)
    Bonjour,
    je voudrais pouvoir bloquer la touche entrée pour la rendre inefficace. En effet j'ai plusieurs control text sur une fenêtre et si j'appuie sur la touche entrée pour valider une saisie, c'est le bouton qui a le focus qui est activé (en l'occurrence le bouton quitter dans mon programme ).

    Je précise que je n'ai rien trouvé sur le net (tout ce que je trouve c'est avec MFC http://www.flounder.com/dialogapp.htm), ni sur le forum "développement windows".

    merci de votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 27
    Points : 46
    Points
    46
    Par défaut
    Ton bouton "quitter" ne serait pas défini comme étant le bouton "par défaut" par hasard ? Celui qui valide le dialogue lorsque l'utilisateur appuie sur entrée ?

    Peux-tu préciser ta notion de focus ? Lorsque tu es dans un champ texte, le contrôle qui a le focus est normalement ton champ texte.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Points : 83
    Points
    83
    Par défaut
    Oui, tu as tout à fait raison, c'est bien le bouton par défaut, mais outre le fait que je ne sache pas le changer, je ne pense pas que modifier le bouton par défaut change mon problème : quelque soit le bouton par défaut, l'appui sur entrée va valider le bouton et lancer l'action associée (à moins qu'il y ait une autre solution ?), c'est pourquoi je veux inhiber la touche entrée.

    Quand je parlais de focus, je parlais effectivement du bouton par défaut, abus de langage...

  4. #4
    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 518
    Points
    41 518
    Par défaut
    ES_WANTRETURN?
    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.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Points : 83
    Points
    83
    Par défaut
    j'ai mis ES_AUTOVSCROLL | ES_WANTRETURN mais cela ne change rien, quand j'appuie sur la touche entrée c'est mon bouton "quitter" qui est par défaut qui s'active.
    J'ai bien changé mon bouton par défaut mais cela n'est pas très "sioux", je préférerai valider la touche entrée pour sortir du champs.

  6. #6
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    885
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 885
    Points : 1 522
    Points
    1 522
    Par défaut
    ES_WANTRETURN only applies to multiple-line edit controls in Windows version 3.1 or later.
    Ca ne s'applique donc qu'aux contrôles d'éditions multi-lignes.

  7. #7
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Si tu ne peux pas intercepter cette touche au niveau de l'application, le plus radical est le hook. Regarde le Low level keyboard hook.

  8. #8
    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 518
    Points
    41 518
    Par défaut
    Non, pas un hook, ce serait prendre un marteau-pilon pour écraser une mouche. Plutôt subclasser ou superclasser les contrôles d'édition.

    Il y a quelques infos sur comment les contrôles Edit marchent avec Entrée, donc ça devrait aider pour le subclassage.

    Edit: En fait, ça n'apporte rien. Mais je suppose qu'en interceptant WM_KEYDOWN ou WM_CHAR et remplaçant l'entrée par une Tab avant d'appeler l'ancienne procédure de fenêtre, ça devrait marcher (puisque c'est ça que tu veux, en fait: Que la touche Entrée mimique le comportement de la touche Tab).
    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.

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Points : 83
    Points
    83
    Par défaut
    Pour le moment j'ai partiellement résolu mon problème en bloquant la touche entrée : je n'ai plus aucun bouton par défaut et l'appui sur entrée est donc sans aucune action dans mon panneau.

    Maintenant Médinoc, ce que tu viens de me suggérer au sujet de WM_KEYDOWN ou WM_CHAR est très intéressant, je vais essayer de travailler là-dessus et je vous tiens au courant.

    merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/03/2014, 15h44
  2. bloquer la touche entrée
    Par marie6631 dans le forum MFC
    Réponses: 4
    Dernier message: 12/05/2009, 10h46
  3. [MFC] la touche entrée
    Par Aradesh dans le forum MFC
    Réponses: 6
    Dernier message: 08/04/2005, 13h07
  4. [MFC] Comment bloquer lma touche maximiser?
    Par xs_nady dans le forum MFC
    Réponses: 2
    Dernier message: 14/06/2004, 21h05
  5. MDI sans MFC, possible ?
    Par delire8 dans le forum MFC
    Réponses: 4
    Dernier message: 17/06/2002, 08h38

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