Entwickler-Ecke

Windows API - Windows - Anzeige // TitleBarInfo [beantwortet]


TheNeon - So 20.04.03 18:16
Titel: Windows - Anzeige // TitleBarInfo [beantwortet]
Hallo zusammen,

mein Problem:
unter Windows2000 sieht mein Prog wie gewollt aus, doch unter WindowsXP sind die Panels zu hoch ...... dies scheint daran zu liegen, dass unter WindowsXP (mit Designer-Modus) die Titelleiste so groß ist. Ich habe meine ziemlich klein gestellt ( 18 ) und die Differenz wird wohl an den Panels ausgelassen. :evil:

meine Frage:
wie kann ich die Größe der Titelleiste abfragen um meine Panels daran zu orientieren??

... oder gibt es eine andere (bessere) Lösung ??? :(


Moritz M. - So 20.04.03 18:56

Du könntest die Fenstergröße auslesen und an die Panelgröße anpassen...


TheNeon - So 20.04.03 19:11

das funktioniet nicht, da diese immer gleich ist.

hab aber jetzt selbst mehr rausbekommen ....... ich muss die Größe der Titelleiste auslesen ....... dies geht mit sizeOf und TitleBarInfo, doch wie wende ich das an?!?

soweit bin ich schonmal:

s:=sizeof(TITLEBARINFO);

doch:
1. von welchem Typ ist s
2. funktioniert der Aufruf nicht ..... der Compiler meldet:
Undefinierter Bezeichner: 'TITLEBARINFO'

hab ich irgendwas vergessen ???????

ZusatzInfo:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/gettitlebarinfo.asp


Moritz M. - So 20.04.03 19:14

Delphihilfe hat folgendes geschrieben:

Returns the number of bytes occupied by a variable or type.

Unit

System

Category

miscellaneous routines

function SizeOf(X): Integer;

Description

Pass a variable reference to SizeOf to determine the number of bytes used to represent the variable. Pass a type identifier to SizeOf to determine the number of bytes used to represent instances of that type. SizeOf is useful for determining the amount of memory to specify for the FillChar, Move, or GetMem procedures.


SizeOf gibt einen Integer zurück, warscheinlich in Pixeln.

Das Beispiel aus der Delphihilfe:
Zitat:
type

CustRec = record
Name: string[30];
Phone: string[14];
end;
var
P: ^CustRec;
begin
GetMem(P, SizeOf(CustRec));
Canvas.TextOut(10, 10, 'The size of the record is ' + IntToStr(SizeOf(CustRec)));
FreeMem (P, SizeOf(CustRec));
end;


Nach dem Stand der Dinge kann (oder ist) der Rückgabewert von SizeOf in Bytes.


TheNeon - So 20.04.03 19:49

hihi ...... ging schnell ........ hab das Problem anders gelöst bekommen:


var i : Integer;
begin
i:=GetSystemMetrics(SM_CYSIZE);
...


.... trotzdem vielen Dank


Moritz M. - So 20.04.03 19:50

Bitte Bitte. Gerne geschehen.


Delete - So 20.04.03 20:33

sizeof gibt, wie die Hilfe schon sagt die Größe eines Varaibalentypes oder Rekords zurück. Die Lösung die letztendlich gefunden wurde ist die einzig richtige.