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] KeyDown qui ne marche pas au premier appel de CDialog


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Points : 7
    Points
    7
    Par défaut [MFC] KeyDown qui ne marche pas au premier appel de CDialog
    Bonjour.

    J'ai une fenêtre principale qui appelle une CDialog via une entrée de menu.
    Malheureusement, la fonction OnKeyDown de cette CDialog ne marche pas au premier appel de la CDialog (pas de pb pour les fois suivantes)

    La CDialog est crée dans le constructeur du Doc de ma fenêtre principale, via la fonction Create. Lorsque je reçois le clic sur l'entrée de menu pour ouvrir la CDialog, je fais un ShowWindow(SW_SHOW).

    La CDialog ne doit pas être crée à chaque fois, car elle contient une liste (dans une ListBox) de données de drag&drop, qu'il ne faut pas supprimer, et qui doivent être afficher lorsque l'utilisateur souhaite réafficher la CDialog

  2. #2
    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,
    je suppose que la dialog est non modale .
    essaye de lui donner le focus avant showwindow.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Merci de ta participation, mais le GetFocus() ne donne rien.
    Et bien vu pour la CDialog non modale, j'avais oublié de le préciser

  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
    j'ai pas dis de recuperer le focus() mais de le lui donner lol
    utilises SetFocus() .....

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Excuse-moi, mais c'est une faute de frappe, j'ai bien utilisé SetFocus(). Je m'en suis rendu compte pour éditer le post, mais tu avais déjà posté

  6. #6
    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
    par contre tu n'as pas expliqué quel est le context de onkeydown :
    c'est sur la dialog ? ,un control ?


  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Le OnKeyDown s'effectue sur la CDialog, mais je préfèrerais qu'il s'effectue sur la ListBox (je n'ai pas trouvé comment faire, alors je passe par le OnKeyDown de la CDialog)

    NB: je travaille avec Visual Studio .NET 2003

  8. #8
    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
    essaye la chose suivante:
    dans les ressources tu definis le tab order en mettant la listbox en premier.
    et tu mets entre commentaire ton onkeydown .

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Mon resource.h comence comme ça (je ne l'ai pas modifié):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //{{NO_DEPENDENCIES}}
    // Microsoft Visual C++ generated include file.
    // Used by Configurateur.rc
    //
    #define IDD_PANIERVIRTUEL               9   //c'est la DialogBox
    #define IDD_ABOUTBOX                    100
    #define IDP_OLE_INIT_FAILED             100
    ...
    Pourquoi veux-tu que je commente le OnKeyDown ?

  10. #10
    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
    heu le tab order se regle dans les ressources ,c'est l'ordre de navigation avec la touche tab..
    sous .net menu format :ordre de tabulation .

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Toujours rien

  12. #12
    mat.M
    Invité(e)
    Par défaut
    Il ne faut pas utiliser OnKeyDown

    Parce que effectivement comme le souligne Farscape c'est un problème de focus.
    Il faut redéfinir la méthode CWnd :reTranslateMessage et évaluer Msg->Message , voir si on reçoit WM_KEYDOWN et test la touche désirée.
    Cette méthode/événement est prioritaire par rapport aux autres dont notamment OnKeyDown ce qui permet de capter les touches enfoncées

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Ca y est! Ca marche.
    Merci beaucoup à vous deux; mat.M pour la solution et farscape pour le temps qu'il a passé à essayer de résoudre mon problème.

Discussions similaires

  1. Méthode getSize() qui ne marche pas
    Par mush_H dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 20/03/2005, 01h29
  2. [SWING] KeyListener qui ne marche pas
    Par kindool dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/01/2005, 19h04
  3. Iptables configuration qui ne marche pas....
    Par The_Nail dans le forum Sécurité
    Réponses: 7
    Dernier message: 03/02/2004, 14h27
  4. Réponses: 3
    Dernier message: 08/09/2003, 15h06
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

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