采用静态调用方式 主程序代码: function AiGetJpgRes(AResName:PChar):THandle; far;external 'Ai9Res.dll'; function AiGetBmpRes(AResName:PChar):THandle; far;external 'Ai9Res.dll'; function AiGetIcoRes(AResName:PChar):THandle; far;external 'Ai9Res.dll'; function AiGetCurRes(AResName:PChar):HCursor; far;external 'Ai9Res.dll'; function AiGetStrRes(AResName:Integer):String; far;external 'Ai9Res.dll';其中JPG图的调用如下: procedure TForm1.Button2Click(Sender: TObject); var Stream:TResourceStream; MyJpg: TJpegImage; begin Stream :=TResourceStream.Create(AiGetJpgRes(PChar('LOGIN')),'LOGIN','JPEG'); Try MyJpg:=TJpegImage.Create; try MyJpg.LoadfromStream(Stream); Image1.Picture.Assign(MyJpg); Finally MyJpg.Free; end; Finally Stream.Free; end; end;DLL中代码:{$R Ai92RES.RES}function AiGetJpgRes(AResName:PChar): THandle; export; begin FindResource(hInstance, PChar('JPEG'),AResName); Result := hInstance; end; function AiGetBmpRes(AResName:PChar): THandle;export; begin FindResource(HInstance,'BITMAP' ,AResName); Result:=HInstance; end; function AiGetStrRes(AResName:Integer):string; export; begin Result:=LoadStr(AResName); end;function AiGetIcoRes(AResName:PChar): THandle; export; begin Result := LoadIcon(HInstance,AResName); end;function AiGetCurRes(AResName:PChar): HCursor; export; begin Result:=LoadCursor(HInstance,AResName); end;exports AiGetBmpRes index 1, AiGetJpgRes index 2, AiGetIcoRes Index 3, AiGetCurRes index 4, AiGetStrRes index 5; end
类似 function PlayMetaFile; external gdi32.dll name 'playMetaFile';
2.定义引入的函数,参照:
function MyCalu; external MySysUtils.dll name 'MyCalu';
“能否在IDE中直接加载”
没有这种说法(据我所知),是在程序里加载,不是在IDE里,Dll不是可视组件,欢迎探讨。
但没学到,欢迎探讨。
主程序代码: function AiGetJpgRes(AResName:PChar):THandle; far;external 'Ai9Res.dll';
function AiGetBmpRes(AResName:PChar):THandle; far;external 'Ai9Res.dll';
function AiGetIcoRes(AResName:PChar):THandle; far;external 'Ai9Res.dll';
function AiGetCurRes(AResName:PChar):HCursor; far;external 'Ai9Res.dll';
function AiGetStrRes(AResName:Integer):String; far;external 'Ai9Res.dll';其中JPG图的调用如下:
procedure TForm1.Button2Click(Sender: TObject);
var
Stream:TResourceStream;
MyJpg: TJpegImage;
begin Stream :=TResourceStream.Create(AiGetJpgRes(PChar('LOGIN')),'LOGIN','JPEG');
Try
MyJpg:=TJpegImage.Create;
try
MyJpg.LoadfromStream(Stream);
Image1.Picture.Assign(MyJpg);
Finally
MyJpg.Free;
end;
Finally
Stream.Free;
end;
end;DLL中代码:{$R Ai92RES.RES}function AiGetJpgRes(AResName:PChar): THandle; export;
begin
FindResource(hInstance, PChar('JPEG'),AResName);
Result := hInstance;
end;
function AiGetBmpRes(AResName:PChar): THandle;export;
begin
FindResource(HInstance,'BITMAP' ,AResName);
Result:=HInstance;
end;
function AiGetStrRes(AResName:Integer):string; export;
begin
Result:=LoadStr(AResName);
end;function AiGetIcoRes(AResName:PChar): THandle; export;
begin
Result := LoadIcon(HInstance,AResName);
end;function AiGetCurRes(AResName:PChar): HCursor; export;
begin
Result:=LoadCursor(HInstance,AResName);
end;exports
AiGetBmpRes index 1,
AiGetJpgRes index 2,
AiGetIcoRes Index 3,
AiGetCurRes index 4,
AiGetStrRes index 5;
end