Hi,
ich habe mittels des folgenden Codes [durch SetWindowLong(... not wsCaption)] in einer Applikation die Möglichkeit eingebaut die Form-Titlebar ein- und auszuschalten, also die Applikation in einen MiniModus zu versetzen.
Das Problem, welches jetzt auftritt ist, dass wenn ich die Applikation ohne Titlebar verschiebe der Hintergrund des unterliegenden Fensters/Desktops verschoben wurde und nicht automatisch neu gezeichnet wird. Erst wenn ich das unterliegende Fenster z.B. resize, wird es korrekt neu gezeichnet.
Zur Veranschaulichung sind zwei kleine Screenshots angehängt, einmal von der Applikation im Minimodus und dann vom verschobenen Hintergrund des darunterliegenden Fensters.
Hat jemand ne Ahnung, ob ich die Fenster im Hintergrund noch extra neu zeichnen lassen muss oder wie ich das sonst verhindern kann?
Danke,
Stefan
Delphi-Quellcode:
Procedure HideTitlebar(Formular: TForm);
Var
Save : LongInt;
Begin
If Formular.BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Formular.Handle, gwl_Style);
If (Save and ws_Caption)=ws_Caption then
Begin
Case Formular.BorderStyle of
bsSingle,
bsSizeable : SetWindowLong(Formular.Handle,
gwl_Style,
Save and (Not(ws_Caption)) or ws_border);
bsDialog : SetWindowLong(Formular.Handle,
gwl_Style,
Save and (Not(ws_Caption)) or ds_modalframe or ws_dlgframe);
End;
Formular.Height:=Formular.Height-getSystemMetrics(sm_cyCaption);
Formular.Refresh;
End;
end;