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
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
tu as essayé le message WM_KILLFOCUS ? et ensuite un ShowWindow SW_MINIMIZE ?
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 ?
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à
si tu utilises une CMiniFrameWnd c'est pour un toolbar ?
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 ?
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
voir ce que ça donne .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(AfxGetMainWnd()->GetActiveFrame( )!=this) { //ok perte de focus }
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 ...Envoyé par ludoman
j'ai trouvé mon problème, ca venait de la fonction SetWindowPos.
Il était codé
j'ai mis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SetWindowPos(NULL, rectWindow.left, rectWindow.top,rectWindow.Width(), rectWindow.Height(),SWP_NOZORDER | 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SetWindowPos(&CWnd::wndBottom, rectWindow.left, rectWindow.top,rectWindow.Width(), rectWindow.Height(),SWP_NOACTIVATE);
Ma fenêtre disparaît bien quand elle n'a plus le focus et passe en dessous des autres.
Merci de votre aide.
Ludoman
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager