Hallo miteinander!
Mir ist gerade aufgefallen, dass meine Form mit BorderStyle = bsSingle unter Windows 7/Aero um 10 Pixel zu hoch gezeichnet wird. Wenn ich also Height := 100 setze, erhalte ich auf dem Bildschirm eine Höhe von 110 Pixeln. (Vermutlich ist das das gleiche Problem wie in
http://www.delphipraxis.net/114442-v...t-angeben.html.) Mit BorderStyle = bsSizeable habe ich den Effekt nicht, und unter Windows Classic oder Aero Basic auch nicht.
Blöd ist das u.a. deshalb, wenn ich einer bsSizeable-Form die gleiche Größe wie der bsSingle-Form verpassen will. Wenn ich einfach
Form2.Height := Form1.Height
setze, wird die zweite Form 10 Pixel kleiner als die erste.
Hat jemand eine Idee, wie ich die "Spezialbehandlung" ausschalten kann, oder wenigstens einen Workaround?
EDIT: Ich hab mittlerweile
das und
das gefunden.
EDIT2:
Delphi-Quellcode:
const
DWMWA_EXTENDED_FRAME_BOUNDS = 9;
function DwmGetWindowAttribute(hwnd: HWND; dwAttribute: DWORD; pvAttribute: Pointer; cbAttribute: DWORD): HResult;
stdcall;
external '
dwmapi.dll';
var
r: TRect;
begin
DwmGetWindowAttribute(
Handle, DWMWA_EXTENDED_FRAME_BOUNDS, @r, SizeOf(r));
liefert tatsächlich ein Rechteck, das in jeder Richtung um 5 Pixel über BoundsRect hinausgeht.