比如,Form1是主窗口,里面有一个Timer,十秒后会自动显示Form2这个时候发现,如果Form1最小化了,Form2就显示不出来,那么,一个EXE文件中,两个窗体,能否主窗体的最小化不影响另外一个?

解决方案 »

  1.   

    像MSN的提示信息,就跟主窗口的最小化状态无关,只要有即时消息,就会出现。
      

  2.   

    主窗体最小化说明暂时不用它了啊,那直接hide,就让它显示form2,如果需要form1时再show出来不行嘛???
      

  3.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      self.WindowState:= wsMinimized;
      form2.show;
    end;应该没问题啊,只不过form1不能最小化到任务栏了。
      

  4.   

    form2.Show;
      form2.WindowState:=WsNormal;
      

  5.   

    谢谢xixuemao(吸血猫) jinjazz(近身剪(N-P攻略))不过,你们的方法都有问题哦,吸血猫的方法,运行了之后,很明显Form1缩到了任务栏的上面,也就像你说的那样,不能最小化到任务栏了,
    近身剪(N-P攻略)可能根本没有调试自己的代码,那样子,Form1最小化之后,Form2也被最小化了,根本没有窗口啦。
      

  6.   

    此外,为什么不让Form1隐藏呢,因为隐藏之后的Form1依然占用系统资源,比如内存,而如果最小化之后,占用的系统资源会小很多的。
      

  7.   

    用sui的控件来做吧
    它里面有个suiMSNPOPForm
    直接就能实现如同MSN的效果
      

  8.   

    不好意思,自己找到方法解决了,经过测试,可行。http://www.howtodothings.com/ViewArticle.aspx?id=32285b1e9b764692929ec4f1203d2f40
    This article demonstrates how to stop all forms in a Delphi app from minimizing when the main form minimizes.For each child form that you wish to remain visible do thistype
      TSomeForm = class(TForm)
      protected
        procedure CreateParams(var Params: TCreateParams); override;
      end;implementationprocedure TSomeForm.CreateParams(var Params : TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.WndParent := GetDesktopWindow;
    end;