调用DLL窗体后,将调出的窗体最小化,不能使用原主窗体的功能.如何在不关闭调用出的DLL窗体的情况下,使用主窗体?

解决方案 »

  1.   

    估计你是用showModal 的方式显示窗口,那当然会出现你说的
      

  2.   

    将DLL中的窗体 Showmodal改为 show,
    不过需要注意主窗体调用DLL时的语句写法,以免这边调用然后就释放啦
      

  3.   

    我的调用DLL过程是这样的,哪位大哥帮我改一下!
    procedure Dowgrk(H: THandle; AConn: TADOConnection; S: string; N: Integer);
    begin
     CoInitialize(Nil);
      Application.Handle := H; { 将过程的句柄赋值为调用者的句柄 }
      { 上面语句的作用在于, DLL的句柄和调用者的句柄相同,在任务栏中就不会各自出现一个任务标题了。 }
      with Tfrmwgrk.Create(Application) do
          try{ 创建窗体 }
          adoconnection1.ConnectionString:=aconn.ConnectionString;
          statusbar1.Panels[1].Text:='当前登录用户:'+S;
          Lb_czy.Caption:=S;
          ShowModal;; { 模式化显示窗体 }
        finally
          adoconnection1.Connected:=false;
          Free; { 调用结束时销毁窗口 }
          Application.Handle:= OldHandle;
         CoUninitialize;
        end;
    end;
      

  4.   

    ShowModal; { 模式化显示窗体 }---->show
      

  5.   

    改showmodal;为show;后显示不出来窗体?
      

  6.   

    当然了,你用了try ... finally 后,执行了show之后又马上释放掉了,改一下你的Dowgrk过程,在窗体关闭时做finally中的代码