![]() |
Handle eines Fensters -> ist es im Vollbildmodus?
Hi wiedereinmal!
Ich möchte herausfinden, ob das Fenster, von dem ich das Handle habe, sich gerade im Vollbildmodus befindet. Hat jemand eine Ahnung, wie ich das machen könnte? Die Größe abzufragen und mit Screen.Width bzw. Screen.Height zu vergleichen geht nicht, weil ein maximiertes Fenster auch diese Größe hat - die Taskleiste habe ich nämlich versteckt. LG, ich |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Die IsZoomed WinAPI Funktion sollte da helfen.
|
Re: Handle eines Fensters -> ist es im Vollbildmodus?
laut msdn gibt diese funktion aber auch nur zurück ob das Fenster maximiert ist.
@jbg: Was meinst du mit "ist im vollbildmodus"? Von vollbild spricht man immer wenn ein Fenster den Bildschirm vollständig ausfüllt. |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Naja, ich meine eigentlich, dass es keine Titelleiste bzw. Rahmen hat und bildschirmfüllend ist...
Danke aber schonmal, für eure Antworten! LG, ich |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
dann musst du einmal abfragen ob es die Größe der Bildschirmauflösung hat und dann ob es eine Titelleiste hat.
|
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Ersteres geht, wie schon gesagt, leider nicht, weil ich die Taskbar ja verstecke, und somit hat dann jedes maximierte Fenster die Größe des Bilschirms; und zweiteres weiß ich leider nicht, wie das geht, da würde ich euch fragen. :roll:
LG, ich |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
So:
Code:
Oder so ähnlich....
var WndRect: Trect;
aHandle := Handle des Fensters was du hast; GetClientRect(aHandle , WndRect); if WndRect.Top =0 WndRect.Left =0 WndRect.Right = GetSystemMetrics(SM_CXSCREEN)) WndRect.Bottom = GetSystemMetrics(SM_CYSCREEN)) then Fullscreen := True else Fullscreen := False; |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
@turboPASCAL: Da fehlt noch die Prüfung ob das Fenster eine Titelleiste hat (nach der Definition des Threads-Eröffners)
|
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Hm...
Code:
:gruebel:
if (getwindowlong(Handle, GWL_STYLE) or WS_CAPTION) > 0 then
|
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Moin turboPASCAL,
also wenn schon, dann
Delphi-Quellcode:
oder
if (getwindowlong(Handle, GWL_STYLE) and WS_CAPTION) > 0 then
Delphi-Quellcode:
oder
if (getwindowlong(Handle, GWL_STYLE) and WS_CAPTION) <> 0 then
Delphi-Quellcode:
zum einen and statt or verwenden, da Du ja schliesslich wissen willst, ob das Flag enthalten ist, deshalb muss man es ausmaskieren (and) und nicht hinzufügen (or) ;-)
if (getwindowlong(Handle, GWL_STYLE) and WS_CAPTION) = WS_CAPTION then
Zum Anderen: > 0 birgt die Gefahr, dass das Ergebnis false wird, da hier ja der Wert eines Bitfeldes getestet wird, und das Ergebnis somit nicht als Zahl vergleichen werden sollte. Es könnte auch negativ sein, wenn man es als Zahlwert ansieht. Deshalb <> 0 oder = WS_CAPTION |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Ich habe mir nur diese Bitmasken von Programmen im Vollbildmodus und normal angeschaut (im Speziellen Opera und IrfanView), nur waren sie immer lauter Einsen. Deshalb denke ich funktioniert das so nicht...
LG & Gute Nacht, ich |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
@Christian Seehase, Ja ja, ja und ja. Habe gerade kein Delphi zur Hand. ;) :drunken: ...
Zitat:
Zitat:
|
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Naja, ich habe sie via Delphi versteckt. Also ShowWindow mit SW_HIDE und dann WorkAreaRect auf den ganzen Bildschirm gesetzt...
LG, ich |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
*Shieb* oder *Pusch* :mrgreen:
Hat denn niemand mehr eine Ahnung :roll: |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Vieleicht hilft dir die Funktion
![]() ![]() |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Es geht mir ja eigentlich nicht darum, ob das Fenster maximiert ist, sondern ob es im Vollbildmodus ist, sprich die Taskleiste (sofern vorhanden, was bei mir ja nicht der Fall sein wird) überdeckt wird...
Aber trotzdem danke! LG, ich |
Re: Handle eines Fensters -> ist es im Vollbildmodus?
Habe jetzt nocheinmal die Antworten durchgeschaut und im Code von turboPASCAL ist mir aufgefallen, dass er die Funktion GetClientRect verwendet. Client bedeutet ja der innere Bereich exklusive der Titelleiste bzw. des Rahmens; und die Funktion bleibt ihrem Namen auch treu, d. h. sie liefert die innere Größe -> abfragen ob größer/gleich Bildschirmrechteck und es GEHT :bounce1:
Ich muss mich bei allen Mithelfenden und Lösungen Suchenden herzlich bedanken :thumb: und auch entschuldigen, dass ich erst jetzt da draufgekommen bin! :duck: LG, ich |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 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 by Thomas Breitkreuz