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 :

Bouton actif (focus), mais la touche entrée n'a aucune action + un autre détail


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut Bouton actif (focus), mais la touche entrée n'a aucune action + un autre détail
    Bonsoir tout le monde,

    Est-il normale qu'un bouton qui a la focus (avec SetFocus) ne réagisse pas à la touche entrée alors que la fenêtre qui le contient est active ?
    Si oui, comment faire ça autrement ?

    Sinon, autre question : est-ce qu'une editbox d'une seule ligne envoit un message particulier à la procedure de la fenêtre quand on appuis sur la touche entrée ?

    Merci.
    Pierre.

  2. #2
    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 519
    Points
    41 519
    Par défaut
    Pas mal de choses concernant les touches sont gérées différemment pour les boîtes de dialogue affichées par la fonction DialogBox() (ou les fenêtres concernées par un appel à IsDialogMessage() dans la boucle de messages).

    Pour la plupart des contrôles, cela est régit par la façon dont ils répondent au message WM_GETDLGCODE.

    Je ne connais pas les détails eux-mêmes, mais tu peux faire des expériences en envoyant toi-même WM_GETDLGCODE à un contrôle ou en testant dans une boucle de messages avec et sans IsDialogMessage() (et avec et sans TranslateMessage())...
    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.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut
    Salut Médinoc,

    C'est dans une fenêtre normal, apparament WM_GETDLGCODE c'est seulement pour les boites de dialogues.

    Avec set focus, sous XP avec le style XP par défaut, le bouton qui a le focus avec SetFocus a le texte entouré d'un pointillé fin, je vien de regarder sur un .exe d'installation, les boutons qui agissent à la touche entrée n'ont pas le texte entouré, mais ont les bords un peu bleu.

    Je vais essayer d'aller faire un tour de plus sur msdn ...

    A+, Pierre.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut
    Bonjour,

    Est-ce que quelqu'un a une idée ?

    Merci.
    A+, Pierre.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut
    Personne n'a eut ce genre de problème ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Est-ce qu'il réagit à espace?
    Pour moi la touche "Return" permet de simuler un click sur le bouton par défaut, si ce bouton est différent du bouton qui a le focus cela doit faire bizarre.
    Et pour simuler un clic sur un bouton qui a le focus il me semble que c'est "espace". Mais ce n'est pas une règle absolue, c'est juste de l'expérience.
    A+
    Soazig

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut
    Bonjour et merci pour ta réponse.

    Oui, le bouton réagit à la touche espace, mais je voudrais qu'il réagisse à l'entrée.

    Comment déclarer un bouton en bouton par défaut (pas dans une boîte de dialogue, dans une fenêtre normale) ?

    Merci.
    A+, Pierre.

  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 519
    Points
    41 519
    Par défaut
    J'ignore si c'est possible "Proprement".
    Mais tu peux toujours intercepter WM_KEYDOWN pour forcer un clic ((SendMessage(BM_CLICK)) si tu reçois un appui sur la touche Entrée...

    Enfin, tu peux toujours envoyer le message DM_SETDEFID à ta fenêtre et voir si elle réagit. Mais j'ai bien peur que le traitement de la touche Entrée se fasse par la fonction IsDialogMessage() qui est appelée automatiquement pour une boîte de dialogue. Mais si tu utilises IsDialogMessage() dans ta boucle de messages, ta fenêtre se comportera exactement comme une boîte de dialogue pour ce qui est du clavier (navigation entre contrôles, touche ESC qui provoque un WM_COMMAND(IDCANCEL)...)
    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
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut
    Je n'arrive pas à me servir de WM_KEYDOWN, j'ai ajouté ça dans la procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    case WM_KEYDOWN:
          MessageBox(NULL, "Une touche a été pressée !", "Info", MB_OK);
    break;
    Donc normalement, quand la fenêtre est active, si j'appuie sur n'importe quelle touche (à quelques exception près), ça devrais m'afficher la MessageBox, mais ça ne le fait pas ...

    C'est bien comme ça qu'il faut s'en servir (en vérifiant en plus la touche pressée) ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut
    Finalement, WM_KEYDOWN marche, mais pas quand l'éditbox a le focus ... donc cette solution n'ira pas pour ce cas.

    Est-ce quelqu'un a une idée ?

Discussions similaires

  1. Simuler la touche Entrée par un bouton
    Par blond1888 dans le forum Delphi
    Réponses: 5
    Dernier message: 01/02/2007, 09h44
  2. [VB.NET][2.0]Changer le focus avec la touche Entrée
    Par Angath dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/11/2006, 10h11
  3. Réponses: 7
    Dernier message: 23/08/2006, 18h20
  4. [Vb.NET]simulation de bouton lors de la touche entrée
    Par Monstros Velu dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/04/2006, 09h34
  5. bouton Ok = Touche Entrée du clavier
    Par Samanta dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 23/08/2005, 17h10

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