谢教大虾!
    我主程序动态调用了一个DLL来创建一个MDI窗口
      1、当主程序退出时出现出存出错误,谢问怎样解决
      2、我想当DLL创建的MDI窗体关闭时释放自身的DLL

解决方案 »

  1.   

    使用动态Load Dll吧,网上有一个相关的Demo,你可以下载下来模仿一下。
    好像在Delphi盒子可以找到
      

  2.   

    当你创建窗体时,取它的句柄,主程序时退出时,给这个句柄发close消息就可以了
      

  3.   

    最好是在关闭的时候free!
      

  4.   

    其实说实话,这样的操作不适合写到DLL中
      

  5.   

    偶的MdI窗体全部写在dll中,没有问题的,关键是要把apllication以及screen对象传到dll中。
      

  6.   

    dll动态加载,再用windows消息机制,当MDI窗体关闭时发个消息给主程序,主程序接收到消息后,再释放dll。
      

  7.   

    sunkevin(愚公) 
    怎样发消息呀?
      

  8.   

    最好用一个类去管理你的DLL,加载,卸载都写在里面,
    发消息的操作一般情况下,用SendMessage(HHandle, Msg, 0, 0);
    HHandle是接收Form的句柄,此句柄需要你传进来,或自己通过FindWindow方法去取,
    Msg是消息类型,可以自定义的
    ....
    多看看一些例子,学习东西都是一步一步过来的
      

  9.   

    library Plug1;uses
      Windows,
      SysUtils,
      Classes,
      Controls,
      Forms,
      UnitChildForm in 'UnitChildForm.pas' {fmChildSample};
    {$R *.res}exports
      ShowAForm;var
      SelfApplication: TApplication;
      SelfScreen: TScreen;procedure DLLUnloadProc(Reason: Integer); register;
    var
      P: ^Word;
      P1: ^DWORD;
    begin
      if Reason = DLL_PROCESS_DETACH then begin
        Screen := SelfScreen;
        Application := SelfApplication;
      end;
    end;begin
      SelfApplication := Application;
      SelfScreen := Screen;
      DLLProc := @DLLUnloadProc;
    end.