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

  • 相关阅读:
    游戏引擎架构
    前瞻设计:创新型战略推动可持续变革(全彩)
    解放创意——自由人的自由联合
    python2中的__init__.py文件的作用
    python导入模块时的执行顺序
    json使用
    JQuery基本语法(部分)
    谷歌开发者工具使用
    pythonseleniumAPI
    静态、自适应、流式、响应式四种网页布局的区别
  • 原文地址:https://www.cnblogs.com/findumars/p/5393692.html
Copyright © 2011-2022 走看看