![]() |
Immer im Vordergrund
Wie setze ich ein Fenster immer im Vordergrund? :gruebel:
Ich habe da glaube ich mal etwas gesehen was nur unter Windows Xp oder so funktioniert, ich habe aber Windows ME. Wenn das Fenster dann aber im Vordergrund ist soll es auch über der Taskleiste sein! Wie geht das? MfG Valle PS.: Schaut bitte noch ![]() |
Re: Immer im Vordergrund
Ich hätte ja nicht gedacht das das so schwer ist...
|
Re: Immer im Vordergrund
Hallo Valle,
welchen Foreground meinst du - application wide oder system wide? Unter den Forms deines Programms kannst du bei einer Form einfach FormStyle auf den Wert fsStayOnTop setzen. Zur Win32 API Funktion SetForegroundWindow() äußert sich Microsoft in den aktuellen Entwicklungsrichtlinien recht eindeutig: Microsoft schreibt im PSDK In a preemptive multitasking environment, you should generally let the user control which window is the foreground window. Durch flankierende Änderungen am System ist es auch nicht mehr möglich ein Fenster nach Belieben in den Vordergrund zu setzen - schon gar nicht immer: Microsoft schreibt im PSDK With this change, an application cannot force a window to the foreground while the user is working with another window. Weihnachtliche Grüße vom marabu |
Re: Immer im Vordergrund
Lass dem Benutzer dann aber auch die Wahl es in den Hintergrund bzw. Normal einstellen zu können, so etwas kann ziemlich nervig sein.
|
Re: Immer im Vordergrund
Eventuell
SetWindowPos(handle,hwnd_topmost,0,0,0,0,swp_noact ivate+swp_nomove+swp_nosize); Bei mir funktioniert das. |
Re: Immer im Vordergrund
Boar, ich habe eine Gabe unbeantwortbare Fragen zu stellen...
Also mit immer im Vordergrund meine ich das unter all den Fenstern die auf dem Desktop erscheinen meins immer oben ist. Ich kann aber nicht glauben das das nicht erlaubt ist weil ich viele Programme kenne die dies auch tun. Das ich dem Benutzter die Wahl gebe ist klar, weil ich von den vielen Programmen die dies auch tun weiß wie nervig das sein kann.. :kotz: Trotzdem Danke und noch eine kleine Bitte: Wenn´s geht schreib doch nochmal im Klartext was ich den dafür brauche. :oops: MfG Valle PS.: Dieser Beitrag wurde um 23:58:20 geschrieben :shock: |
Re: Immer im Vordergrund
:!: ACHTUNG: :!: __________________________________________________ _____________________________ DAS PROBLEM IST GELÖST! DER FREUNDLICHEN FORUM-USER AMATEURPROFI HAT DIE KORREKTE ANTWORT GESENDET! DER GEWINNER (AMATEURPROFI) ERHÄLT 1.000.000 MAL DANKE! WENN ER SICH DIESE WIRLICH ABHOLEN WILL DANN KANN ER HIER NOCHEINMAL ANTWORTEN UND DIE 35 MB GROßE DATEI ABHOLEN! MFG VALLE |
Re: Immer im Vordergrund
Ein "Ganz oben" gibt es nicht ... mit HWND_TOPMOST kann man zwar dafür sorgen, daß ein Fenster weit vorne in der Z-Order liegt, dennoch können andere fenster immernoch davor liegen, vorallem wenn sie auch mit HWND_TOPMOST nach vorne gebracht worden.
|
Re: Immer im Vordergrund
Zitat:
Ganz oben ! Deine Aussage "Ganz oben gibt es nicht" ist etwa so, als sagtest Du "Heute gibt es nicht", nur weil "Heute" morgen "Gestern" sein wird. |
Re: Immer im Vordergrund
Was er meinte: Welches Fenster ist denn ganz oben, wenn zwei oder mehr Fenster auf HWND_TOPMOST gesetzt werden?
|
Re: Immer im Vordergrund
Zitat:
Scheint aber nicht so zu sein. Ich habe eben mal ein bischen herumprobiert. Wenn z.B. 2 Fenster auf HWND_TOPMOST gesetzt sind, ist das Fenster (dieser 2) oben, das den Fokus hat. Jedoch bleiben beide über anderen Fenstern, die zwar den Fokus haben, aber nicht auf HWND_TOPMOST gesetzt sind. |
Re: Immer im Vordergrund
Das heißt, diese beiden Fenster führen dann so zusagen eine zweite z-Order ein, die über der von den normalen Fenstern liegt.
|
Re: Immer im Vordergrund
Hallo Michael,
ja, so sieht es aus. Ich weiß nicht, wie das Windows-intern gelöst wird, kann mir aber vorstellen, daß die "Z-Order" letztendlich nur eine Liste aller Fenster ist, bei sichergestellt wird, (a) daß die Fenster die als topmost gekennzeichnet sind, oben in der Liste stehen und (b) daß ein als topmost gekennzeichnetes Fenster, das den Fokus hat, vor anderen topmost Fenstern steht. |
Re: Immer im Vordergrund
Also wie das genau verwaltet wird, konnte ich auch noch nicht vorstellen, aber bisher scheint die Z-Order wirklich nur eine einzige Liste zu sein.
Dabei wird jedes Fenster immer soweit nach vorne geholt, wie se sein Status erlaub, sobald es den Fokus bekommt, oder für diese explizit gesagt wird, daß es nach vorne wandern soll. Also, wenn man z.B. StayOnTop setzt, dann wird es soweit vorgeholt, daß es hinter dem letzten TopMost-Fenster und vor den anderen StayOnTop-Fenstern landet ... und so weiter. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz