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

  • 相关阅读:
    vue-router 动态路由匹配
    vue-router $route
    vuex mapActions
    vuex mapMutations 使用
    ES6 动态计算属性名
    vuex Payload 荷载
    vuex mapGetters
    vuex mapState使用
    Vue 引入ElementUI 2.0.11:依赖未发现的问题
    vuex 深入理解
  • 原文地址:https://www.cnblogs.com/findumars/p/5393692.html
Copyright © 2011-2022 走看看