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
BeginBufferedPaint,
BufferedPaintMakeOpaque und
EndBufferedPaint. Diese sind in der
Unit UxTheme deklariert und befinden sich in der Bibliothek uxtheme.dll.
Gruß
xaromz