form1、form2两个窗体,在form1中通过如下代码显示form2
TForm2 *p_frm = new TForm2(this);//也试了TForm2 *p_frm = new TForm2(Application)
p_frm->ShowModal();同时,form1中还有一个时间空间循环判断,当符合某一条件时,关闭除form1外的所有窗口,代码如下:for (int i=0;i<Screen->FormCount;i++)
{
  if (Screen->Forms[i]->ClassType!=this->ClassType)
  {
    delete Screen->Forms[i];//也试了Screen->Forms[i]->Free()
    i--;
  }
}这段代码运行后,虽然除form1外的所有窗口都关闭了,但是form1上的按钮都不能点击了,就象ShowModal出来的窗口没有关闭那样!求大家指点,如何关闭模式窗口,谢谢!

解决方案 »

  1.   

    先关闭掉ShowModal的窗体,再关闭其他的,取得ShowModal窗体的方法是:
    H := GetLastActivePopup(Application.Handle);
    if H <> 0 then
      SendMessage(H, WM_Close, 0, 0);... ...
      

  2.   

    测试,不能达到目的,我在帖子里是把问题简化了,我把实际情况说一下:
    form1、form2、form3,1 show 2,2 showmodal 3,3中自己有做条件判断,然后自己关闭自己,但是1中也有在一些意外情况下关闭2、3的。按linzhengqun(风。我回来了)的方法,SendMessage(H, WM_Close, 0, 0);不能ShowModal窗口。大家再帮忙看看啊!
      

  3.   

    不能ShowModal窗口->不能关闭showmodal窗口
      

  4.   

    不知道C++Builder里有无Form->Hide和Form->Release方法,所以俺只是试探着说这么句.