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][Debutant] Cacher fenetre après perte de focus


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 26
    Points : 17
    Points
    17
    Par défaut [MFC][Debutant] Cacher fenetre après perte de focus
    Bonjour,

    je voudrais faire disparaitre(cacher) une CMiniFrameWnd lorsqu'elle perd le focus.

    J'ai essayé plusieurs WM_Message_Handlers mais je n'ai pas trouvé mon bonheur.

    Merci de votre aide.
    Ludoman

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu as essayé le message WM_KILLFOCUS ? et ensuite un ShowWindow SW_MINIMIZE ?

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    oui j'ai essayé mais cet évènement se déclenche très (trop) souvent : a priori à chaque fois qu'un controle de ma frame perd le focus. Quelqu'un peut il confirmer cela ?

    Il me faudrait une condition supplémentaire pour être sûr que c'est bien la frame qui a perdu le focus.

    Après pour la cacher, il y a SW_MINIMIZE ou SW_HIDE.

    Any idea ?

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    a mon avis, il te suffit d'intercepter le killfocus sur chaqu'un de tes controles, et de ne rien faire dans ce cas là

  5. #5
    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
    si tu utilises une CMiniFrameWnd c'est pour un toolbar ?

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    je vais essayer pour les killfocus de chaque controle

    non pas de toolbar utilisée, je sais pas pourquoi c'est une CMiniFrameWnd car je reprends un code existant, j'essaie d'améliorer ...
    tu me proposerais autre chose ?

  7. #7
    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
    non c'est pour essayer de comprendre le context ,c'est quoi cette fenetre ?
    déjà ce qui m'intrigue c'est que c'est une CMiniFrameWnd.
    sur le killfocus tu peux essayer de regarder qui a le focus au nivreau frame
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(AfxGetMainWnd()->GetActiveFrame( )!=this) 
    {
    //ok perte de focus
    }
    voir ce que ça donne .


  8. #8
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    cette fenetre sert juste à afficher une liste déroulante de tachs et après je lance différentes actions

    ce que je voudrais, c est qu'elle disparaisse quand une autre fenetre devient active, aujourd'hui elle reste au premier plan

    sinon j'ai essayé ta fonction, tu voulais utiliser GetActiveWindow non ?
    malheureusement je ne passe jamais dedans, c'est comme si ma fenetre était forcée en premier plan mais sans etre active !

  9. #9
    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
    Citation Envoyé par ludoman
    cette fenetre sert juste à afficher une liste déroulante de tachs et après je lance différentes actions

    ce que je voudrais, c est qu'elle disparaisse quand une autre fenetre devient active, aujourd'hui elle reste au premier plan

    sinon j'ai essayé ta fonction, tu voulais utiliser GetActiveWindow non ?
    malheureusement je ne passe jamais dedans, c'est comme si ma fenetre était forcée en premier plan mais sans etre active !
    oui tu peux essayer aussi ...

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    j'ai trouvé mon problème, ca venait de la fonction SetWindowPos.

    Il était codé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetWindowPos(NULL, rectWindow.left, rectWindow.top,rectWindow.Width(), rectWindow.Height(),SWP_NOZORDER | SWP_NOACTIVATE);
    j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetWindowPos(&CWnd::wndBottom, rectWindow.left, rectWindow.top,rectWindow.Width(), rectWindow.Height(),SWP_NOACTIVATE);
    et cela marche. A priori, le fait de ne pas lui donner de position dans le z-order (premier paramètre NULL) fixait ma frame.

    Ma fenêtre disparaît bien quand elle n'a plus le focus et passe en dessous des autres.

    Merci de votre aide.
    Ludoman

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

Discussions similaires

  1. datagrid case a cocher validation apres perte de focus
    Par Julien666 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/01/2008, 21h03
  2. Réponses: 4
    Dernier message: 05/10/2006, 13h10
  3. Réponses: 8
    Dernier message: 26/09/2006, 09h19
  4. [MFC][Debutant] Fenetre principale
    Par BNS dans le forum MFC
    Réponses: 2
    Dernier message: 01/08/2005, 15h18
  5. Réponses: 3
    Dernier message: 03/02/2004, 17h34

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