Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#1

Form mit bsSingle unter Aero zu groß

  Alt 19. Apr 2011, 13:05
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.
Uli Gerhardt

Geändert von uligerhardt (19. Apr 2011 um 13:57 Uhr)
  Mit Zitat antworten Zitat