zoukankan      html  css  js  c++  java
  • 在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;

    http://www.cnblogs.com/lenic/archive/2009/03/29/1424267.html

  • 相关阅读:
    索引的优缺点
    php中创建和调用WebService
    Redis常用数据结构和操作
    PHP的array_merge
    数据库最左前缀原则
    Mysql+Sphinx实现全文搜索
    YAPI安装和使用
    根据导入xlxs的文件,来写入数据库
    操作RDS文档说明
    springboot查找配置文件路径的过程
  • 原文地址:https://www.cnblogs.com/findumars/p/5393692.html
Copyright © 2011-2022 走看看