Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: nonVCL Controls - Doublebuffered

  Alt 1. Nov 2007, 18:58
Hallo,

Zitat von Apollonius:
Das habe ich jetzt durch ein paar Minuten Studium der Controls.pas herausgekriegt.
...und liegst damit voll daneben. In Delphi 2007 funktioniert der Doublebuffered-Modus (bei Verwendung von Aero-Glass) grundsätzlich anders. Ich poste mal einen Ausschnitt aus der Control.pas:
Delphi-Quellcode:
if DwmCompositionEnabled then
begin
  DC := BeginPaint(Handle, PS);
  try
    PaintBuffer := BeginBufferedPaint(DC, PS.rcPaint, BPBF_COMPOSITED, nil, MemDC);
    Perform(WM_ERASEBKGND, MemDC, MemDC);
    Perform(WM_PRINTCLIENT, MemDC, PRF_CLIENT);
    if not (Self is TCustomForm) then
      BufferedPaintMakeOpaque(PaintBuffer, @PS.rcPaint);
    EndBufferedPaint(PaintBuffer, True);
  finally
    EndPaint(Handle, PS);
  end;
end;
Die interessanten Funktionen sind MSDN-Library durchsuchenBeginBufferedPaint, MSDN-Library durchsuchenBufferedPaintMakeOpaque und MSDN-Library durchsuchenEndBufferedPaint. Diese sind in der Unit UxTheme deklariert und befinden sich in der Bibliothek uxtheme.dll.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat