Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Kleine API-Fragen (https://www.delphipraxis.net/38108-kleine-api-fragen.html)

shareholder 14. Jan 2005 20:20


Kleine API-Fragen
 
1.) Wie ermittle ich die ID, wenn ich den Handle eines Fensters bereits habe?

2.) Wie lese ich die Styles / StylesEx eines Fensters aus, dessen Handle ich auch bereits habe?

Dax 14. Jan 2005 20:26

Re: Kleine API-Fragen
 
Zu 2): Für die normalen Styles
Delphi-Quellcode:
Styles := GetWindowLong(Handle, GWL_STYLE);
und für die ExStyles
Delphi-Quellcode:
ExStyles := GetWindowLong(Handle, GWL_EXSTYLE);
Für die ID weiß ich leider nichts..

toms 14. Jan 2005 20:29

Re: Kleine API-Fragen
 
zu 1)

Delphi-Quellcode:
ID := GetWindowLong(Handle, GWL_ID);

shareholder 14. Jan 2005 20:47

Re: Kleine API-Fragen
 
Ich danke Euch! :)

Aber wie werte ich den LONG-Wert nun aus? Ich meine, ich habe jetzt bsp.: 256 zurückbekommen. (Beim ermitteln der Styles)

Wie komme ich jetzt zu den Angaben à la WS_BORDER... ? :thumb:

Dax 14. Jan 2005 20:49

Re: Kleine API-Fragen
 
Den Wert durchgehend unter Verwendung von and mit den Stale-Werten verknüpfen. Wenn das Resultat größer als Null ist, ist der gewählte Style gesetzt ;)

shareholder 14. Jan 2005 20:55

Re: Kleine API-Fragen
 
Ich habe dich so verstanden,
aber das ist wohl falsch. :???:

Code:
// C++ - Variante

  if((WS_THICKFRAME && Styles) > 0)
    ShowMessage("Der Style ist aktiv");
Wie meinst du's also genau? :) Danke!

Dax 14. Jan 2005 21:02

Re: Kleine API-Fragen
 
Genau so hab' ich das gemeint, aber so ist es am besten:
Delphi-Quellcode:
if Style and WS_BORDER = WS_BORDER then
  ShowMessage('Style ist aktiv.');

shareholder 14. Jan 2005 21:23

Re: Kleine API-Fragen
 
Habe gerade praktisch ein paar Probleme... aber das passt schon. :)

Gibt es eine Möglichkeit, aus dem Long-Wert - bspw. 524288 - den Stylenamen (in diesem Fall WS_SYSMENU) zurückgeben zu lassen?



Ist die Andverknüpfung logisch oder bitweise? Ersteres hätte doch keinen Sinn, oder?
Mein Problem... Muss meine Variable "Style" nicht immer 0 sein, damit die "Ja, der Style ist aktiv"-Meldung erscheint?

Dax 14. Jan 2005 21:28

Re: Kleine API-Fragen
 
Die Verknüpfung ist Bitweise, also erübrigt sich deine zweite Frage: Nur wenn die Bits in Style dort gesetzt sind wie die Bits im Styleflag (z.B. WM_BORDER), gibt die Operation etwas über 0 zurück. Es liegt in der Natur der and-Operation, das als Ergebnis immer 0 herauskommt, wenn ein Operand 0 ist ;)

Aber jetzt zur ersten: Der einzige Weg ist, deinen Wert mit and nach allen möglichen Styles durchzurastern und dann den Namen des Styles zurückzugeben.

shareholder 14. Jan 2005 22:02

Re: Kleine API-Fragen
 
sollte dann nicht:

Code:
if Style and WS_BORDER = WS_BORDER then
  ShowMessage('Style ist aktiv.');
besser

Code:
if Style and WS_BORDER > 0 then
  ShowMessage('Style ist aktiv.');
heißen? :shock: Wie auch immer, es funktioniert jetzt! :=)

--

Wenn ich nun sinnvoll alle Styles durchgehen möchte, sollte ich mit einer
Schleife durch ein Array switchen, gell? :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz