Thema: Delphi WM_NCPAINT ohne flackern

Einzelnen Beitrag anzeigen

Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#1

WM_NCPAINT ohne flackern

  Alt 17. Mär 2007, 12:29
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;
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat