需要在DLL中显示MDI窗口,挂靠主调用程序Application,
dll中
Aplication := 主程序Application
(若使用Application.Handle := 主程序Application.Handle无法显示MDI窗口)
关闭主程序后总是无法释放干净DLL资源,为何?
(DLL中的窗体和控件都正常释放了)

解决方案 »

  1.   

    在dll的窗体中的 onClose 事件, 加入:OnClose(Sender: TObject; var Action: TCloseAction); 
    begin 
      Action := caFree
      

  2.   

    现在资源释放没有问题了,但是调用freelibray(DLL.handel)会报异常,不调用到正常的很,奇怪?
    释放多了?
      

  3.   

    修改成 freelibrary('dll.dll') //说明‘’里面是你调用的DLL文件名  不是DLL.handel????
    你上面的handel 对吗?应该是handle
      

  4.   

    应该在加载Dll中的窗口单元时用一个变量把原来的Application保存起来,然后再设置Application:=主程序Application;最后在释放前把Application指定回原来保存的Application。
      

  5.   

    另外,指定一个函数指针给DLLProc全局变量,以便回调,这个函数中就是判断是否释放Dll,如果是则把Application恢复。
      

  6.   

    很可能 你dll里面 还有资源没 释放,也会报错的!!!
      

  7.   

    你MDI窗口 用到什么空件了 一一列出 包括按钮什么