1、用重载窗口 CreateParams 方法显示非主窗口
  procedure CreateParams(var Params: TCreateParams);override;
  procedure Tform1.CreateParams(var Params:TCreateParams);
  begin
    inherited CreateParams(Params);
    Params.WndParent := GetDesktopWindow;
  end;显示保存对话框时会把主窗口也显示出来
2、用API显示非主窗口
  procedure Tform1.FormCreate(Sender: TObject);
  begin
    SetWindowLong(self.Handle, GWL_EXSTYLE, WS_EX_APPWINDOW);
  end;
打开多个非主窗口后,在任务栏上不能切换回主窗口
我的问题是:
怎么才可以把非主窗口显示在任务栏上,同时可以自由切换窗口,打开保存对话框时又不显示主窗口?请各位高手解答,谢谢!

解决方案 »

  1.   

    也没玩过,提几个建议。
    首先分清是MDI还是SDI层次的窗口应用;
    其次,分清窗口的主从关系。
    我注意到你的 procedure Tform1.CreateParams(var Params: TCreateParams)函数中:
    Params.WndParent := GetDesktopWindow;    // 可能这句导致窗口的主从关系混乱,所有子窗口应当只有一个唯一的相同的Parent Window 。