Moin The Omega,
ich hab's mal so gemacht, und funktioniert:
Delphi-Quellcode:
var
hDCBase : HDC;
hDCComp : HDC;
hBMP : HBITMAP;
begin
hDCBase := GetDC(self.Handle);
hDCComp := CreateCompatibleDC(hDCBase);
try
hBMP := CreateCompatibleBitmap(hDCBase,500,500);
if SelectObject(hDCComp,hBMP) <> 0then
begin
try
if TextOut(hDCComp,20,20,'TEST',4) then
begin
if not BitBlt(hDCBase,0,0,500,500,hDCComp,0,0,SRCPAINT) then
begin
ShowMessage('BitBlt:'+SysErrorMessage(GetLastError));
end;
end
else
begin
ShowMessage('TextOut:'+SysErrorMessage(GetLastError));
end;
finally
DeleteObject(hBMP);
end;
end
else
begin
ShowMessage('SelectObject:'+SysErrorMessage(GetLastError));
end;
finally
DeleteDC(hDCComp);
end;
end;
Der Hauptunterschied dürfte wohl sein, dass CreateCompatibleDC und CreateCompatibleBitmap sich beide auf den gleichen DeviceContext beziehen müssen, und Du bei CreateCompatibleBitmap den durch CreateCompatibleDC erzeugten verwendet hast.