AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Hintergrund neu zeichnen beim Ausschalten der Titlebar
Thema durchsuchen
Ansicht
Themen-Optionen

Hintergrund neu zeichnen beim Ausschalten der Titlebar

Ein Thema von GPRSNerd · begonnen am 27. Nov 2008 · letzter Beitrag vom 30. Nov 2008
Antwort Antwort
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, 10: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
Benutzerbild von GPRSNerd
GPRSNerd

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

Re: Hintergrund neu zeichnen beim Ausschalten der Titlebar

  Alt 30. Nov 2008, 22:27
*Bump*

Zu dem Thema "Titelleiste verstecken" mit SetWindowLong gibts hier ne Menge Fragen und Antworten.
Ist denn keinem das Problem mit dem nicht refreshten Hintergrund aufgefallen oder gibts dafür einfach keine Lösung?
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz