Mettre une fenêtre en premier plan

Signaler
Messages postés
20
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
12 août 2005
-
Messages postés
20
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
12 août 2005
-
Hey, encore un novice en MFC.
Je souhaitrai connaitre le code qui permette de mettre en premier plan une fenêtre.
Concrétement, j'ai un SDI avec des boites de dialogue non modale. Lorsque j'ouvre un boite de dialogue non modale elle passe en premier plan et le reste jusqu'à ce que je la referme. Par contre, j'aimerai bien pourvoir faire passer la fenêtre principale (mainframe) au premier plan lorsque je clique dessus. Actuellement, elle passe juste active mais la non modale reste dessus.

Merci pour votre aide...

9 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
ou
SetForegroundWindow(hWnd);
Messages postés
20
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
12 août 2005

Ok d'accord... mais je crois que ma question n'était pas assez précise.

Dans quel type d'événement (fonction) dois-je mettre ce code. Je vous qu'au moment ou je clic n'importe ou dans la mainframe celle-ci passe dessus. Et même chose pour les nons modales.

Merci
Messages postés
20
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
12 août 2005

Autre PB dans l'utilisation de SetWindowPos() ou de SetForegroundWindow().

Dans le cas SetForegroundWindow( ) le compilo me dit que cette fonction n'a pas de paramètre (en effet je vois que cette fontion est définie 2 fois, dans winuser.h en effet il y a un paramètre ... mais dans mon cazs ça marche pas).

Y'a pê un problème de define ou d'include...

merci pour votre aide
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
C'est CWnd::SetForegroundWindow qui ne prend pas de paramètre. La fenêtre est m_hWnd. Sinon tu peux faire ::SetForegroundWindow(hWnd) pour utiliser l'api classique.
Pour que la dialogBox ne reste pas au premier plan, tu la mets en popup au lieu de child
Messages postés
20
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
12 août 2005

Comment on fait ça popup au lieu de child ?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Dans l'editeur de ressources, tu mets type=popup (type ou style je sais plus)
Messages postés
20
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
12 août 2005

Cette fenêtre est déjà en popup !!!!! ???
Messages postés
20
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
12 août 2005

Voici le code de ma fonction (en effet ça compile mais rien main ne passe pas devant)

int CMainFrame::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
{
::SetForegroundWindow(pDesktopWnd->m_hWnd);

return CFrameWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
}
Messages postés
20
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
12 août 2005

Personne ne peut ne répondre SVP ???