Einzelnen Beitrag anzeigen

Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#1

Hintergrund neu zeichnen beim Ausschalten der Titlebar

  Alt 27. Nov 2008, 09:35
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;
Miniaturansicht angehängter Grafiken
hintergrund_nach_verschieben_der_app_204.jpg   appohnetitelbar_891.jpg  
Stefan
  Mit Zitat antworten Zitat