Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Handle eines Fensters -> ist es im Vollbildmodus? (https://www.delphipraxis.net/61944-handle-eines-fensters-ist-es-im-vollbildmodus.html)

Delphi-Freak 28. Jan 2006 15:18


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

jbg 28. Jan 2006 16:16

Re: Handle eines Fensters -> ist es im Vollbildmodus?
 
Die IsZoomed WinAPI Funktion sollte da helfen.

SirThornberry 28. Jan 2006 16:20

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.

Delphi-Freak 28. Jan 2006 17:53

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

SirThornberry 28. Jan 2006 18:27

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.

Delphi-Freak 28. Jan 2006 20:49

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

turboPASCAL 28. Jan 2006 22:36

Re: Handle eines Fensters -> ist es im Vollbildmodus?
 
So:

Code:
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;
Oder so ähnlich....

SirThornberry 28. Jan 2006 22:42

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)

turboPASCAL 28. Jan 2006 23:10

Re: Handle eines Fensters -> ist es im Vollbildmodus?
 
Hm...

Code:
 if (getwindowlong(Handle, GWL_STYLE) or WS_CAPTION) > 0 then
:gruebel:

Christian Seehase 28. Jan 2006 23:59

Re: Handle eines Fensters -> ist es im Vollbildmodus?
 
Moin turboPASCAL,

also wenn schon, dann

Delphi-Quellcode:
if (getwindowlong(Handle, GWL_STYLE) and WS_CAPTION) > 0 then
oder
Delphi-Quellcode:
if (getwindowlong(Handle, GWL_STYLE) and WS_CAPTION) <> 0 then
oder
Delphi-Quellcode:
if (getwindowlong(Handle, GWL_STYLE) and WS_CAPTION) = WS_CAPTION then
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) ;-)

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

Delphi-Freak 29. Jan 2006 00:08

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

turboPASCAL 29. Jan 2006 00:21

Re: Handle eines Fensters -> ist es im Vollbildmodus?
 
@Christian Seehase, Ja ja, ja und ja. Habe gerade kein Delphi zur Hand. ;) :drunken: ...

Zitat:

Zitat von Delphi-Freak
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...

:gruebel:

Zitat:

[...] die Taskleiste habe ich nämlich versteckt
Meines Wissen schaut die noch ein oder zwei Millimeter hervor...?

Delphi-Freak 29. Jan 2006 10:43

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

Delphi-Freak 31. Jan 2006 16:52

Re: Handle eines Fensters -> ist es im Vollbildmodus?
 
*Shieb* oder *Pusch* :mrgreen:
Hat denn niemand mehr eine Ahnung :roll:

Heffalump 31. Jan 2006 17:02

Re: Handle eines Fensters -> ist es im Vollbildmodus?
 
Vieleicht hilft dir die Funktion GetWindowPlacement weiter. Da bekommst Du folgenden Record WINDOWPLACEMENT zurück. Dieser enthält unter anderem die Information, ob das Fenster maximiert ist.

Delphi-Freak 31. Jan 2006 17:07

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

Delphi-Freak 4. Feb 2006 15:52

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