Delphi-PRAXiS
Seite 1 von 2  1 2      

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:38 Uhr.
Seite 1 von 2  1 2      

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