怎么关掉所有打开的窗口,但不包括主窗口

时间:2021-05-23 20:20:33
在C++ builder中如何关闭所有打开的窗口,但不包括主窗体

13 个解决方案

#1


MDIApplication?
应该很简单的呀。所有的打开的子窗体(子窗体实例)都被存储在一个数组中(若是你自己的Form--Dialog你也可构造一个这样的结构<数组或链表>),然后对他遍历不就行了吗。

#2


检查每一个form的visible属性,决定是否要close

#3


是要关闭MDI子窗体吗?

#4


for(int n=Screen->FormCount-1; n--) {
    if (Screen->Forms[n]!=Application->MainForm)
        Screen->Forms[n]->Close();
}

#5


MDIChildCount是MDI子窗体
MDIChildren[i]->Close关闭第i个MDI窗体

#6


要关闭MDI子窗体!
void __fastcall TMainForm::CloseallExecute(TObject *Sender)
{
//关闭所有
  int Counter;
  for(Counter=0;Counter<MDIChildCount;Counter++)
      MDIChildren[Counter]->Close();
}
//---------------------------------------------------------------------------

#7


to:JSP
如果其中几个窗口是模式显示的
是不是也可以用你的方法关闭掉



#8


采用MDI窗口,将子窗口的formstyle高为MdiChild:
  for(i=0;i<MDIChildCount;i++)
      MDIChildren[i]->Close();

#9


在 Project->Options里设,把form的Auto-create forms中的子窗口去掉就可以了。

#10


晚了

#11


用FormCount历遍,然后判断是不是主窗口,如果不是就Close

#12


一个程序里只会有一个Form为模式显示(除非你在Timer里将Form以模式方式显示,或者其它的办法,但是用户操作的话,只会有一个为模式显示)。即使
真的有多个Form为模式显示,也可以用上面我说的方法关闭。如果是Windows
的打开,保存,替换,选择颜色,打印机设定之类的窗口,用上面的方法就不
可以关闭窗口了,因为这些窗口不是VCL的Form。

#13


To :TSP

有问题啊,我没有试过,但是单纯从代码看:好像屏幕上别的程序的窗体也会被关闭阿!包括不可见窗体!这不会出乱子ma ?

#1


MDIApplication?
应该很简单的呀。所有的打开的子窗体(子窗体实例)都被存储在一个数组中(若是你自己的Form--Dialog你也可构造一个这样的结构<数组或链表>),然后对他遍历不就行了吗。

#2


检查每一个form的visible属性,决定是否要close

#3


是要关闭MDI子窗体吗?

#4


for(int n=Screen->FormCount-1; n--) {
    if (Screen->Forms[n]!=Application->MainForm)
        Screen->Forms[n]->Close();
}

#5


MDIChildCount是MDI子窗体
MDIChildren[i]->Close关闭第i个MDI窗体

#6


要关闭MDI子窗体!
void __fastcall TMainForm::CloseallExecute(TObject *Sender)
{
//关闭所有
  int Counter;
  for(Counter=0;Counter<MDIChildCount;Counter++)
      MDIChildren[Counter]->Close();
}
//---------------------------------------------------------------------------

#7


to:JSP
如果其中几个窗口是模式显示的
是不是也可以用你的方法关闭掉



#8


采用MDI窗口,将子窗口的formstyle高为MdiChild:
  for(i=0;i<MDIChildCount;i++)
      MDIChildren[i]->Close();

#9


在 Project->Options里设,把form的Auto-create forms中的子窗口去掉就可以了。

#10


晚了

#11


用FormCount历遍,然后判断是不是主窗口,如果不是就Close

#12


一个程序里只会有一个Form为模式显示(除非你在Timer里将Form以模式方式显示,或者其它的办法,但是用户操作的话,只会有一个为模式显示)。即使
真的有多个Form为模式显示,也可以用上面我说的方法关闭。如果是Windows
的打开,保存,替换,选择颜色,打印机设定之类的窗口,用上面的方法就不
可以关闭窗口了,因为这些窗口不是VCL的Form。

#13


To :TSP

有问题啊,我没有试过,但是单纯从代码看:好像屏幕上别的程序的窗体也会被关闭阿!包括不可见窗体!这不会出乱子ma ?