![]() |
WM_NCPAINT ohne flackern
tach,
ich zeichen im WM_NCPAINT den Frame meiner Windows also nur den Rand (oben 28 pixel und sonst überl 4 pixel) leider flackert das immer etwas ... wie ist da die beste technik, damit man da das flackern wegbringt? Wollte es schon mit einem Bimtap als zwischenbuffer probieren, aber habe ja das problem, das in der mitte ein 1000*800 pixel bereich ist, der ja im normalen WM_PAINT gezeichnet wird ... also etwas vereinfacht ungefähr so ....
Delphi-Quellcode:
procedure WMNCPaint(var Msg: TWMNCPaint);
var DC : HDC; iCanvas : TCanvas; begin iCanvas := TCanvas.Create; DC := GetWindowDC(Handle) // DC := GetDCEx(Handle, Msg.RGN, DCX_WINDOW or DCX_INTERSECTRGN); // sollte laut MSDN gehen, liefert aber immer 0 zurück ? iCanvas.Handle := DC; SaveIndex := SaveDC(iCanvas.Handle); ExcludeClipRect(iCanvas.Handle, R.Left + 4, R.Top + 28, R.Right - 4, R.Bottom - 4); iCanvas.FillRect(R); // diverse andere zeichen routinen RestoreDC(iCanvas.Handle, SaveIndex); ReleaseDC(Handle, DC); iCanvas.free; Msg.Result := 0; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz