2015-11-21 4 views
0

J'ai une fenêtre MDI principale et j'ai une fenêtre dérivée personnalisée CWnd que je crée dynamiquement. Je veux garder cette fenêtre sur l'écran même lorsque la fenêtre MDI principale est réduite mais je ne veux pas avoir la fenêtre la plus haute. J'ai essayé d'utiliser WS_EX_CONTROLPARENT | WS_EX_APPWINDOW styles, définir parent à NULL et définir le propriétaire à GetDesktopWindow() mais rien ne fonctionne.MFC - Réduire la fenêtre MDI principale uniquement

Des idées comment je devrais faire cela?

Répondre

1

Lorsque la fenêtre est réduite, elle supprime toutes ses fenêtres enfant et appartenant.

Ce code crée une fenêtre régulière (non supérieure) qui n'est pas caché lorsque le cadre principal est réduit au minimum:

HWND hWnd = ::CreateWindow(L"button", L"test", WS_CAPTION|WS_VISIBLE, 
           100, 100, 200, 200, GetDesktopWindow(), 0, 0, 0); 
+0

Merci pour la réponse. Je crée la fonction window by :: CreateEx mais de toute façon j'ai passé GetDesktopWindow() pour le paramètre ParentWindow de la fonction :: CreateEx et la seule différence est que je suis capable d'interagir avec la fenêtre "created" lorsque le MDI principal est minimisé barre des tâches Mais après la minimisation de la fenêtre principale créée fenêtre minimisée aussi bien même si elle avait précédemment le focus. Donc, j'ai également besoin de le sélectionner manuellement dans la barre des tâches pour le montrer. – IKM2007

+0

Hmm ... Je n'observe pas ce comportement. Quels sont les autres styles de votre deuxième fenêtre (y compris les styles étendus)? –

+0

Styles = WS_CAPTION | WS_VISIBLE; ExStyles = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE | WS_EX_APPWINDOW; – IKM2007