Toujours-dans-avant dialogues
-
09-09-2019 - |
Question
Est-il possible de créer un modeless boîte de dialogue en C ++ MFC qui reste toujours au-dessus des autres fenêtres de l'application? Je pense un peu comme la boîte de dialogue Rechercher dans Visual Studio 2005 -. Où il reste sur le dessus, mais vous pouvez toujours modifier le texte sous-jacent
(Si cela fait une différence, ce n'est pas MDI, il est une application en fonction de dialogue)
La solution
De Nish :
Rendre votre séjour dialogue sur
Avez-vous pas vu des programmes qui ont une option "toujours rester-on-top"? bien la chose incroyable est que vous pouvez rendre votre séjour dialogue sur le dessus avec juste une ligne de code. Tout simplement la ligne suivante dans votre classe de dialogue de fonction OnInitDialog ().
SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
En fait ce que nous faisons est d'utiliser les SetWindowPos fonction pour changer l'ordre Z de notre fenêtre de dialogue. nous rendre notre séjour dialogue au-dessus de tous d'autres fenêtres en le déplaçant vers le haut de l'ordre Z. Maintenant, même lorsque vous activer une autre fenêtre, notre fenêtre restera au-dessus. Mais je vous conseille pour vous assurer que vous savez exactement ce que vous faites quand vous faites cela, car il pourrait embêter les gens s'ils ne peuvent pas obtenir votre fenêtre de la route quand ils faire cela.
Comme vous l'avez mentionné dans les commentaires, la ligne ci-dessus rend la fenêtre assis sur le dessus de chaque application. Vous aurez besoin de faire
SetWindowPos(&this->wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
Pour une fenêtre assis sur le dessus de votre seule application.
-Adam
Autres conseils
La réponse acceptée échoue pour Windows 7 ou au-dessus. (Ou peut-être son moi) Mais faire la boîte de dialogue pop-up comme modales au lieu de l'enfant résout. Il se positionne désormais la fenêtre de dialogue principale WRT mais vous pouvez écrire du code pour limiter partout. Utilisation de la frontière ou pas barre supérieure en fait une simple fenêtre.