首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

初学问下form释放有关问题

2012-02-11 
初学问下form释放问题我建立多个form然后每建立以个form的时候先把之前的close掉,但是当我Application-Te

初学问下form释放问题
我建立多个form然后每建立以个form的时候先把之前的close掉,但是当我 Application->Terminate();时为什么所有我已New过的form都要浏览一遍后退出[
code=C/C++]
void __fastcall TForm3::btn1Click(TObject *Sender)
{
  Application->Terminate();  

void __fastcall TForm2::btn1Click(TObject *Sender)
{

  Close();
  TForm3*tf3=new TForm3(this);
  tf3->ShowModal();
  delete tf3;
}
void __fastcall TForm1::btn1Click(TObject *Sender)
{

  Close();
  TForm1*tf1=new TForm3(this);
  tf1->ShowModal();
  delete tf1;
}
[/code]
我的意思是指当我new的时候之前的form就不存在了,但是现在我new后之前的窗体还能看见 整个工程退出就会2和1都浏览下然后工程退

[解决办法]
建议关闭应用的时候不要用Application->Terminate(); ,这个方法是不会释放你动态申请的内存的,包括你new的窗体.你应该发消息给你的主窗体,主窗体收到消息判断并释放new的窗体后关闭应用.
[解决办法]
当项目被创建后,主窗体自动被创建,每new一个窗体,在基本单元cpp文件中就增加一条创建窗体的命令,当程序运行的时候,除主窗体以外,其它窗体也都同时被创建,通过 Form->Show() 命令可以直接打开,而无需创建;
而楼主可能并没有取消项目文件自动创建窗体的代码,同时又增加了new 动态创建代码,所以虽然new的窗体被delete,但程序自动创建的窗体仍然有效。

分析完毕。

热点排行