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;