Moin,
Ich bin's wieder mit meinem Vista-Projekt (zur Erleichterung der Arbeit mit Vista und < D2007).
Also nochmal kurz ein Rückblick: Ich hooke die Paint-Methode von bestimmten WinControls und geben Ihnen folgenden Code:
Delphi-Quellcode:
var
DC, MemDC: HDC;
PS: TPaintStruct;
PaintBuffer: HPAINTBUFFER;
begin
if ((
Message.Msg = WM_PAINT)
and FOwner.DoubleBuffered
and CompositionServices.CompositionEnabled)
then
begin
begin
DC := BeginPaint(FOwner.Handle, PS);
try
PaintBuffer := BeginBufferedPaint(
DC, PS.rcPaint, BPBF_TOPDOWNDIB,
nil, MemDC);
FOwner.Perform(WM_ERASEBKGND, MemDC, MemDC);
FOwner.Perform(WM_PRINTCLIENT, MemDC, PRF_CLIENT);
if not Self
is TCustomForm
then
begin
BufferedPaintSetAlpha(PaintBuffer, @PS.rcPaint, 255);
end;
EndBufferedPaint(PaintBuffer, True);
finally
EndPaint(FOwner.Handle, PS);
end;
end
end
else
begin
FOldWindowProc(
Message);
end;
Das funktioniert auch super. In der tat funktioniert es sogar zu gut, denn nun haben diese WinControls schwarze Ränder (siehe Anhang).
Hat jemand den Ansatz einer Idee, wie ich das verhindern kann?
Danke & Grüße,
Max