启动和关闭应用程序

时间:2014-05-26 21:52:17

标签: c++builder

典型的应用程序如下所示:

Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();

在我Run()发生的事情之后,它等待处理所有消息循环事件,然后将Running属性设置为false。但是,在程序结束之前,表单尚未销毁。

在David Heffernan的评论之后我修改了这个问题:

如何确保Run()之后表单已被销毁,或者如何销毁CreateForm创建的表单?是否有DestroyForm()或类似的等价物?

2 个答案:

答案 0 :(得分:2)

您的表单未明确销毁。所以它的寿命由它的主人决定。当它的主人被摧毁时,它就会被摧毁。所有者是Application,在VCL单元完成阶段被销毁。所以你的形式也被摧毁了。

您希望知道如何在表单被其所有者自动销毁之前销毁该表单。这很简单:当你需要它被销毁时就把它摧毁。

Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
delete Form1;

答案 1 :(得分:2)

  

如何在Run()

之后确保表单已被销毁

VCL确保为您服务。 CreateForm()Application设置为表单的所有者。在Application退出后,VCL的清理逻辑释放WinMain()对象时,它将释放它拥有的所有内容。

  

如何销毁由CreateForm创建的表单?

如果您想手动释放它,您只需delete

delete Form1;

表单将从其所有者中删除,因此不会再次释放它。

  

是否有DestroyForm()或类似的等价物?

不,也不需要。只需delete,就像您使用new而不是CreateForm()创建它一样。

相关问题