在DLL动态链接库中封装VCL的MDI子窗体

在DLL动态链接库中封装VCL的MDI子窗体

这里是工程文件的部分:

  在DLL中封装MDI子窗体需要重写DLL入口函数,具体代码如下:

var
  DllApp: TApplication;//定义保存原DLL的TApplication对象
  DllScr: TScreen;//定义保存原DLL的TScreen对象

procedure UnProcDll(Reason: Integer); reGISter;
//重新定义DLL入口函数
begin
  if Reason = DLL_PROCESS_DETACH then
  begin
    Application := DllApp;
    Screen := DllScr;
  end;
end;

//初始化区
begin
  DllApp := Application;//备份原DLL的TApplication对象
  DllScr := Screen;//备份原DLL的TScreen对象
  DllProc := @UnProcDll;//将重写后的入口函数地址付给DLLProc
end.

 这里是需要导出的函数,写在工程文件或者一个单元的接口部分:

function ShowForm(App: TApplication; Scr: TScreen; Owner: TForm):TForm; export; stdcall;
begin
  //下面的这两个变量是必须的
  Application := App;//这个就是调用的时候对Application对象重新赋值
  Screen := Scr;//对Screen对象赋值
  //函数自定义代码
  if not Assigned(Form1) then
  begin
    //Application.CreateForm(TForm1, Form1);
    Form1 := TForm1.Create(Owner);
    Result := Form1;
  end
else
    Result := Form1;
  //函数自定义代码结束
end;

  最后在工程文件把这个函数导出来就OK了。

//最后导出这个函数
exports
   ShowForm;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值