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 ?
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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 }
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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
Partager