delphi实现调用dll中的窗体 代码
新建一个dLL工程,新建一个窗体 Fr_bb80 ,我们先在它的单元里加入下面一个函数:
function Report(Title:Pchar):Boolean ;stdcall;
begin
if Fr_bb80=nil then
begin
Fr_bb80:=TFr_bb80.Create(application);
Fr_bb80.Caption:= Title;
try
Fr_bb80.ShowModal;
Result:=true;
finally
Fr_bb80.Free;
end;
end;
Result:=false;
end;
再在此dll工程文件(*dpr)文件中加入
exports Report; //加入这个之后,外面就可以调用这个函数了.
新建一个工程,在新窗体中加一个按钮,下面就是这个按钮的完全代码:
type
TLoadDLL2 = function(Title:Pchar):Boolean; stdcall; //这个是必须的,好像叫回调函数??,它的定义与dll中公开的函数要完全一致
var
FLoad: TLoadDLL2; //将TLoadDLL2 实例化
l:THandle;
begin
l:=LoadLibrary('CW.dll'); //动态调用刚才那个dll文件
// 给FLoad函数赋值,将指针指向 GetProcAddress(l, 'Report') ;"Report" 是这个dll公开的函数名
FLoad := TLoadDLL2(GetProcAddress(l, 'Report'));
if Assigned(FLoad) then //判断是否找到这个公开的函数
FLoad('自定义窗口的标题'); //执行函数,注意函数的参数到这时候才开始赋值
FreeLibrary(l); //释放资源
以上代码在delphi7.0通过!
相关文档:
重载 CreateParams 方法即可
声明:
procedure CreateParams(var Params: TCreateParams);override;
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := 0;
end; ......
一、Dll建立
(一)DLL项目的建立
library mydll;
uses
base in 'base.pas';
exports
Triple name 'Tr';
{$R *.res}
begin
end.
(二)函数单元
unit base;
interface
uses windows;
function Triple(N:integer):integer;stdcall;
  ......
想没想过在DELPHI中显示GIF动画?Delphi的用户是非常幸运的,因为有免费控件可以使用。最著名的控件是Anders Melander编写的TGifImage,并提供完整的源程序。它原来的主页是www.melander.dk/delphi/gifimage/,不过有很长时间没有更新了。如果要在新版本的Delphi中使用,可以从http://finn.mobilixnet.dk/delphi/下载Finn T ......
关开发习惯的一些想法,如鲠在喉,不吐不快。究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些建议,或者参考(希望不是误人子弟)。同时,也希望各位能够就我的这些陋习,发表一点看法,给出批评和指正的意见。谢谢。
一.建立工程目录
&nbs ......