Topmost
-
Habe in meiner Anwendung 4 Nichtmodale Dialoge. Diese Dialoge sollen immer im Vordergund sein wenn man sie aufruft. Dazu habe ich die Eigenschaft TopMost auf true gesetzt. Was ich nun nicht verstehe, die Dialoge sind zwar im Vordergrund, allerdings behindern sie sich auch gegenseitig.
Also wenn Dialog1 aufgerufen wird ist dieser im Vordergrund egal welche Applikation ich sonst anklicke. Wenn ich nun auch noch Dialog2 öffne der auch Topmost ist liegt dieser hinter Dialog1. So ist das mit allen vieren. Die Priorität welcher ganz oben ist unterliegt auch keiner Logik. Wenn z.B. der ganz oben wäre der als erstes angelegt wurde. Dem ist aber nicht so.
Und was hat eigentlich die Eigenschaft Vordergrund festlegen zu sagen. Egal ob ich diese Eigenschaft zusätzlich auf true oder false habe es ändert sich nichts am Verhalten.
Kann mir da jemand helfen.
-
Jetzt habe ich gerade noch was getestet. Ich habe nun Topmost auf false und Vordergrund festlegen auch auf false. Und meine Dialoge sind trotzdem immer noch im Vordergrund. Jetzt verstehe ich gar nichts mehr.
-
Wenn ein Popup Fenster ein Parent hat, dann liegt diesimmerüber dem Parent. Das ist by design. Da musst Du gar nichts machen.
-
Ja über dem Parent das ist klar. Aber mein Popup liegt auch über allen anderen Applikationen. Und das auch wenn es nicht den Fokus hat. Woran liegt das?
-
Verwendest Du einen Stil wie WS_EX_TOPMOST, oder SetWindowPos mit wndTop?
Was gibst Du denn als Parent an?
-
Verwendest Du einen Stil wie WS_EX_TOPMOST, oder SetWindowPos mit wndTop?
Nein nichts der gleichen.
Was gibst Du denn als Parent an?
Nichts. Es gibt kein Parent. Da sich die Dialoge in einer DLL befinden.
-
So habe gerade einen Test gemacht.
Habe mir ein neues Projekt angelegt. Darin befinden sich nun eine MFC Anwendung und eine MFC DLL. Nun habe ich 4 Dialoge angelegt. Jeweils eine in der Anwendung selbst und eine in der DLL mit der Eigenschaft TopMost=false und eine Topmost=false.
Es funktioniert so wie erwartet. Die Dialoge mit Topmost=true sind immer im Vordergrund wobei der Dialog aus der Anwendung über der aus der DLL liegt. Und die mit Topmost=false verschwinden im Hintergrund sobald etwas anderes angeklickt wird.
Nun habe ich dies mit meiner richtigen Applikation verglichen. Und dort mache ich eigentlich nichts anderes. Aber dort funktioniert es halt nicht wie gewollt. Die Dialoge sind immer im Vordergrund auch bei Topmost=false.
Habe schon das komplette Projekt bereinigt, hat aber nichts gebracht. Irgendwo ist was kaputt und ich weiß nicht wie ich das gerade biegen soll.
-
Habe das ganz auch mal getestet. Wenn ich mehrer Dialoge in einer DLL ist es abhängig von der Reihenfolge wie ich Sie erzeuge ob sie im immer im Vordergrund sind oder nicht und das unabhängig von topmost=true. Ist zwar seltsam und ich kann mir auch nicht erklären. Aber vieleicht hat ja durch meine Erkenntnis irgendjemand eine Erklärung und kann helfen.
-
push! Hilfe!
-
Hallo. So vieleicht kann mir ja jemand im neuen Jahr helfen
-
Und nochmals. Wieso ist das so?