如何使多个子窗体中的一个始终置顶显示,但是又能激活其他子窗体或父窗体进行操作。
也就是只想让这个子窗体置顶显示,fsStayOnTop会让其他子窗体或父窗体无法激活进行其他操作

解决方案 »

  1.   

    SetWindowPos
    或是SetForegroudWindow
      

  2.   


    我在这个子窗体Creat事件中写“SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);” 效果和fsStayOnTop一样,无法激活其他子窗体和父窗体是我写错了吗
      

  3.   

    找到答案了FormB := TFormB.CreateParented(FormC.Handle);
    FormB.Show;
    //使得Form1处于激活状态
    SendMessage(FormB.Handle, WM_NCACTIVATE, Ord(True), 0);
      

  4.   

    SetWindowPos可以啊。
    你不会用的ShowModal显示吧//Form1窗体
    var
      Form1: TForm1;implementation
    uses unit2,unit3;
    {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      Application.CreateForm(TForm2, Form2);
      Form2.Show;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Application.CreateForm(TForm3, Form3);
      Form3.Show;
    end;
    //Form2窗体
    procedure TForm2.FormCreate(Sender: TObject);
    begin
      SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE)
    end;主窗体或是子窗体都可以激活啊
      

  5.   

    多谢,SetWindowPos果然好用,真奇怪,昨天怎么不好使呢
    给分!