我的主程序调用dll后,dll中如果有窗体调用的话,最后调出的窗体总是跑到后面去,请问高手怎样解决此问题。

解决方案 »

  1.   

    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE)
          or WS_EX_TOOLWINDOW);
      

  2.   

    我刚才没有说清楚,如果没有传句柄时dll中如果有窗体调用的话,最后调出的窗体总是跑到后面去,如果传句柄,dll关闭时,主窗体最小化,并且看不到。帮帮忙好吗
      

  3.   

    刚刚给另外一个贴子写了一个,  一并发给你吧
    library Project2;uses
      SysUtils,
      Classes,
      Forms,
      WIndows;var
      FhPrevApp: HWND:
    {$R *.RES}
    procedure DllHandler(AReason: Longint);
    begin
      case AReason of
        DLL_PROCESS_ATTACH: FhPrevApp := Application.Handle;
        DLL_PROCESS_DETACH: Application.Handle := FhPrevApp;
      end;
    end;procedure CreateChild(AhApp: HWND; AhParent: HWND; AIndex: Integer); stdcall;
    var
      f: TForm;
    begin
      Application.Handle := AhApp;
      case AIndex of
      begin
        0:
          begin
            f := TForm1.Create(Application);
            SetParent(f, AhParent);
            f.Show;
          end;
        1:
          begin
            f := TForm2.Create(Application);
            SetParent(f, AhParent);
            f.Show;
          end;
      end;
    end;exports
      CreateChild;begin
      @DllProc := DllHanlder;
    end.
      

  4.   

    还是没怎么听懂,用showmodal在dll中显示模式窗体不就在前面吗?