Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

Bereichsüberprüfung AdjustWindowRect BorderStyle bsDialog

  Alt 23. Jun 2015, 11:52
Hallo DPler,

ich wollte mit Hilfe einer Anleitung (http://www.delphifeeds.com/go/s/67441) die Titlezeile eines Fensters manipulieren. Soweit funktioniert auch alles
jedoch wenn ich die Eigenschaft BorderStyle des Fensters auf bsDialog stelle erhalte ich eine Bereichsüberprüfungsmeldung.

Delphi-Quellcode:
procedure TfrmMenue.FormCreate(Sender: TObject);
var
  R: TRect;

begin

  if DwmCompositionEnabled then begin
    //init
    SetRectEmpty(R);

    AdjustWindowRect(R, GetWindowLong(Handle, GWL_STYLE), False);

    FWndFrameSize := R.Right;
    GlassFrame.Top := -R.Top;
    GlassFrame.Enabled := True;
    SetWindowPos(Handle, 0, Left, Top, Width, Height, SWP_FRAMECHANGED);
    DoubleBuffered := True;

    //Höhe und Position der Groupbox anpassen
    grbMenue.Top := GetSystemMetrics(SM_CYEDGE)+GetSystemMetrics(SM_CYCAPTION)+8;
    grbMenue.Height := ClientHeight - grbMenue.Top - GetSystemMetrics(SM_CYEDGE)-StatusBar1.Height;
  end;{if}

end;
Das Problem ist das GetWindowLong() im Falle von bsDialog einen negativen Wert ausgibt die Prozedur AdjustWindowRect jedoch nur positive (Cardinal) Werte akzeptiert.

Ich bin gerade etwas ratlos was ich tun muss das ich die Eigenschaft 'bsDialog' einstellen kann, ohne eine Fehlermeldung.
  Mit Zitat antworten Zitat