我要在主程序中调用一个DLL中的子窗体,但当我释放DLL(FreeLibrary(DLL))时子窗体没有被销毁,我觉得当DLL被释放的时候,子窗体的就应该自动析构了。难道是我使用释放函数中的参数不对,还是另有原因,希望高手解答!

解决方案 »

  1.   

    看来你对DLL还不怎么了解...如果你没有编写DLL的释放函数, DLL释放时就没有释放函数可以用来执行.
    当然就没有释放窗体了.
    窗体的释放要自己编写的.DLL释放函数:
    在DLL文件的
    Begin
    ..
    end;
    之间加入
    DllProc := @DLLEntryPoint;
    DLLEntryPoint(DLL_PROCESS_ATTACH);上边的DLLEntryPoint是一个过程.
    该过程必须进行声明和实现. 并用传入一个DWORD参数:procedure DLLEntryPoint(dwReason: DOWRD);
    begin
      if dwReason = DLL_PROCESS_ATTACH then //如果的释放
      begin
         {你的释放代码}
      end;
    end;
      
    把上边的函数过程放到DLL的
    Begin 前面即可