RE^5:Delphi で プラグインをどうやって使うの?
(BAROQUE)
1998/03/09 13:22
stdcallの件はヘルプのDLLの使い方の通りです。
つまり宣言の最後にstdcallをつけます。
「素直にDLLと同じように使えない」の意味がよく分からないんですが、素直に使うとこうなります。
implementation以前に
function GetPicture(buf:PChar; len:longint; flag:Cardinal;
pHBInfo:PHandle; pHBm:PHandle; lpProgressCallback:Pointer;
lData:longint):Integer; stdcall; external 'xxxx.spi';
というふうにします。ハンドルへのポインタはPHandle型でいいのか忘れてしまいましたが・・・。
それで、関数内部では、
var
hBm,hBmInfo:THandle;
pBm:Pointer;
pBmInfo:PBitmapInfo;
Width, Height: Integer;
Bmp: TBitmap;
begin
GetPicture(PChar(filename), 0, 0, @hBmInfo, @hBm, nil, 0); //filenameを渡してください
pBm := LocalLock(hBm);
pBmInfo := LocalLock(hBmInfo);
Width := pBmInfo^.bmiHeader.biWidth; //TBitmap.Widthへ直接でもいいと思います
Height := pBmInfo^.bmiHeader.biHeight;
Bmp := TBitmap.Create;
Bmp.Width := Width;
Bmp.Height := Height;
SetDIBits(Bmp.Canvas.Handle, Bmp.Handle, 0, Height, pBm, pBmInfo, DIB_RGB_COLORS);
LocalUnlock(hBm);
LocalUnlock(hBmInfo);
LocalFree(hBm);
LocalFree(hBmInfo);
...
という感じでしょうか?WinAPIは必須です。
細かな間違いはあるかもしれないけど多分これでいいと思います、多分。
--「RE^5:Delphi で プラグインをどうやって使うの?」に対するコメント--
タイトル(Subject):
お名前(Your name):
Mail address:
Password:
:入力しておくとあとで削除できます
Your message:
7thBridge P ver0.26 (c)Takechin