AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kleine API-Fragen

Ein Thema von shareholder · begonnen am 14. Jan 2005 · letzter Beitrag vom 15. Jan 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von shareholder
shareholder

Registriert seit: 1. Nov 2003
Ort: Denmark, Lolland, Marielyst
280 Beiträge
 
Delphi 7 Enterprise
 
#1

Kleine API-Fragen

  Alt 14. Jan 2005, 20:20
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?
Mastdarmpapillenentzündung ist cool
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Kleine API-Fragen

  Alt 14. Jan 2005, 20:26
Zu 2): Für die normalen StylesStyles := GetWindowLong(Handle, GWL_STYLE); und für die ExStylesExStyles := GetWindowLong(Handle, GWL_EXSTYLE); Für die ID weiß ich leider nichts..
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Kleine API-Fragen

  Alt 14. Jan 2005, 20:29
zu 1)

ID := GetWindowLong(Handle, GWL_ID);
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von shareholder
shareholder

Registriert seit: 1. Nov 2003
Ort: Denmark, Lolland, Marielyst
280 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Kleine API-Fragen

  Alt 14. Jan 2005, 20:47
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... ?
Mastdarmpapillenentzündung ist cool
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Kleine API-Fragen

  Alt 14. Jan 2005, 20:49
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
  Mit Zitat antworten Zitat
Benutzerbild von shareholder
shareholder

Registriert seit: 1. Nov 2003
Ort: Denmark, Lolland, Marielyst
280 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Kleine API-Fragen

  Alt 14. Jan 2005, 20:55
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!
Mastdarmpapillenentzündung ist cool
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#7

Re: Kleine API-Fragen

  Alt 14. Jan 2005, 21:02
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.');
  Mit Zitat antworten Zitat
Benutzerbild von shareholder
shareholder

Registriert seit: 1. Nov 2003
Ort: Denmark, Lolland, Marielyst
280 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Kleine API-Fragen

  Alt 14. Jan 2005, 21:23
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?
Mastdarmpapillenentzündung ist cool
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#9

Re: Kleine API-Fragen

  Alt 14. Jan 2005, 21:28
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.
  Mit Zitat antworten Zitat
Benutzerbild von shareholder
shareholder

Registriert seit: 1. Nov 2003
Ort: Denmark, Lolland, Marielyst
280 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Kleine API-Fragen

  Alt 14. Jan 2005, 22:02
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? 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?
Mastdarmpapillenentzündung ist cool
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr.
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