VoyForums

Login ] [ Contact Forum Admin ] [ Main index ] [ Post a new message ] [ Search | Check update time | Archives: 123456[7]8910 ]


[ Next Thread | Previous Thread | Next Message | Previous Message ]

Date Posted: 16:00:49 08/20/01 Mon
Author: Timothy Dang
Subject: Re: GetDIB failed
In reply to: michael 's message, "GetDIB failed" on 08:13:04 08/04/01 Sat

I had the same problem with Windows 2000 and NT 4 and this is what I have changed and the "GetDIB Failed" went away.

procedure TDibGraphic.LoadFromClipboardFormat(
AFormat: Word; AData: THandle;
APalette: HPalette);
var
Bitmap : Graphics.TBitmap;
ScreenDC : HDC;
begin
if (AFormat <> CF_BITMAP) or (AData = 0) then
raise EInvalidGraphic.Create(
Format(msgUnsupportedClipboardFormat, [AFormat]));

{ MB Jan 08, 2000. In 256 color video mode AssignFromBitmapHandle does not
properly handle the palette, so a simple workaround is to load the image in the
TBitmap class, then drawing it on the canvas of the TDibGraphic. }
ScreenDC := GetDC(0);
try
// if (GetDeviceCaps(ScreenDC, Windows.RASTERCAPS) and Windows.RC_PALETTE) <> 0 then
// begin
{ screen uses a palette }
Bitmap := Graphics.TBitmap.Create;
try
Bitmap.LoadFromClipboardFormat(AFormat, AData, APalette);
Self.NewImage( Bitmap.Width, Bitmap.Height, ifTrueColor, nil, 0, 0);
Self.Canvas.Draw(0, 0, Bitmap);
finally
Bitmap.Free;
end;
// end
// else
// AssignFromBitmapHandle(AData);
finally
ReleaseDC(0, ScreenDC);
end;
end;


>I still get the GetDIBfailed-Error. I changed the code
>based on the proposal from Jason, but it does still
>not work. I saw that the problem occures very heavily
>on Windows 2000.
>
>Has someone an idea to this ugly bug?

[ Next Thread | Previous Thread | Next Message | Previous Message ]

[ Contact Forum Admin ]


Forum timezone: GMT-5
VF Version: 3.00b, ConfDB:
Before posting please read our privacy policy.
VoyForums(tm) is a Free Service from Voyager Info-Systems.
Copyright © 1998-2019 Voyager Info-Systems. All Rights Reserved.