Fensterranddicke ermitteln

25/03/2010 - 23:00 von Dominik Schmidt | Report spam
Hallo,

vielleicht stehe ich gerade auf einem Schlauch.
Ich möchte die Dicke des Fensterrandes (bei Form.BorderStyle > 0)
ermitteln.
Bei dem linken und rechten Fensterrand geht es ja noch, wenn ich
voraussetze, dass diese beiden gleich dick sind (obwohl ich auch schon
Designs mit unterschiedlich dicken Ràndern hatte):
(Me.Width - Me.ScaleWidth) / 2

Aber nachdem der obere Fensterrand fast immer dicker ist, als der untere,
kann ich ja hier nicht einfach genauso die Hàlfte der Summe verwenden.

Wie könnte ich also den oberen Fensterrand ermitteln (mit dem könnte ich
dann ja auch den unteren ausrechnen)?
 

Lesen sie die antworten

#1 Timo Kunze
25/03/2010 - 23:44 | Warnen spam
2 Varianten:

1) GetSystemMetrics -> Das ist der direkte Weg. Man muss da aber
allerhand berücksichtigen, damit das richtige herauskommt. Vor allem
wenn das Fenster noch ein Menü oder andere Elemente hat, die nicht zur
Client-Area zàhlen.
2) Mit GetClientRect das Client-Rechteck ermitteln, dieses mit
ClientToScreen in Bildschirmkoordinaten umrechnen, dann mit
GetWindowRect das Fensterrechteck in Bildschirmkoordinaten ermitteln.
Nun brauchst du nur noch die Differenz der beiden Rechtecke bilden.
Dieser Ansatz ist insgesamt einfacher und robuster, da es hierbei
unwichtig ist, welche Art von Border das Fenster hat und ob es ein Menü
hat. Selbst wenn es keine Border hat, funktioniert der Ansatz.

Timo
www.TimoSoft-Software.de - Unicode controls for VB6
"Those who sacrifice freedom for safety deserve neither."
"Demokratie ist per Definition unsicher. Ihr Schutz entsteht aus der
Überzeugung, dass die demokratischen Kràfte überwiegen und sich – auf
demokratischem Wege – durchsetzen."

Ähnliche fragen