我在程序里用new show了很个相同的窗口出来,怎么才能一次全部关闭

windowsyc 2008-12-19 11:14:31
我程序里有个循环 其中有句 TFXX *frm =new TFXX(NULL) frm->show
结束后会有很多窗体出现吗 现在想点个按钮一次全部关闭
怎么才能实现。。
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
windowsyc 2008-12-20
  • 打赏
  • 举报
回复
谢谢了解了
jxw1987628 2008-12-19
  • 打赏
  • 举报
回复

TForm1 *pForm[10]; // User declarations , in Unit1.h

void __fastcall TForm1::Button1Click(TObject *Sender)//create and show forms
{
for(int i=0; i<10 ;++i)
{
pForm[i]= new TForm1(0);
pForm[i]->Caption ="frm"+IntToStr(i+1);
pForm[i]->Show();
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)//delete forms
{
for(int i=0; i<10 ;++i)
{
delete pForm[i];
}
}
//---------------------------------------------------------------------------
jxw1987628 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 windowsyc 的回复:]
jxw1987628
用 delete []frm不行吗?
[/Quote]



/*
不行的,这个和下面是2回事情


这里是申请动态内存为6个T类型的元素数组。
然后下面通过 delete [] p 来释放申请的空间
而且必须delete [] p ; 不能是 delete p ;
T *p =new T[6] ;

// ........

delete [] p ;


//给你的代码示例是静态数组,并非是申请堆空间。

只是这些静态数组的元素都是 用来保存我们的Form对象指针(而Form对象从堆上创建)

所以delete pForm[i] 实际上这句会调用每个Form的析构函数,然后逐一释放掉每个Form对象在堆上的空间
*/


springworker 2008-12-19
  • 打赏
  • 举报
回复
好像不行!
windowsyc 2008-12-19
  • 打赏
  • 举报
回复
jxw1987628
用 delete []frm不行吗?
babycathq2000 2008-12-19
  • 打赏
  • 举报
回复
如果仅仅是隐藏,不需要释放资源的话,pForm[i]->Close();

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧