|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"Bitmapの描画について"
みなさん、こんにちは。
会議室#16/00231のTNさんのサンプルをまねて、描画プログラムを作成しているの
ですが、「不正な処理を実行しました」云々のWindowsのエラーメッセージが表示され
てしまいます。
どなたか解決または回避策をご存知の方がおられましたら、ご教授ねがいます。
動作環境がWin98であると「メモリアクセス違反」を発生し、WinNTでは発生しませ
ん。また、通常のビットマップでは発生せず、Win98添付の「エジプト.bmp」「雲.bmp」
だと発生します。
var
hdl: HBITMAP;
bmp: TBitmap;
ifo: PBitmapInfo;
isz: DWORD;
img: Pointer;
gsz: DWORD;
begin
bmp := TBitmap.Create;
try
bmp.LoadFromFile('雲.bmp');
//
hdl := bmp.Handle;
if hdl <> 0 then begin
GetDIBSizes(hdl, isz, gsz);
ifo := AllocMem(isz + 1);
img := AllocMem(gsz + 1);
try
GetDIB(hdl, 0, ifo^, img^);
// StretchDIBitは省略
finally
FreeMem(ifo);
FreeMem(img);
end;
end;
finally
bmp.Free
end
end;
2000/07/20(木) 09:25 小倉 隆弘(QZU05132@nifty.com)
Original document by 小倉 隆弘 氏 ID:(QZU05132)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|