让C Builder / Delphi在启动时创建TForms,还是手动创建?

前端之家收集整理的这篇文章主要介绍了让C Builder / Delphi在启动时创建TForms,还是手动创建?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Builder(或Delphi)中创建TForm时,将代码添加到main以在应用程序启动时创建这些表单:
Application->CreateForm( __classid( TxForm),&xForm );

这使事情变得更容易,但是当应用程序有10,20,50,100个表单时它是否明智?我假设这可以抓住各种内存和系统句柄.通过使用Project-> Options-> Forms对话框删除表单,可以在需要时随时创建表单,并且:

std::auto_ptr< TxForm > myForm( new TxForm( this ));

myForm->ShowModal();

所以问题是,哪个更好,让C Builder以自己的方式执行,或者在需要时手动创建表单?

解决方法

创建但尚未可见的表单占用内存并使启动时间生效,但不应使用任何系统句柄,因为窗口句柄之类的东西在实际显示窗口之前不会分配.

话虽如此,我几乎总是手动创建表单(使用类似于你的auto_ptr的代码),因为我不能忍受全局变量.手动创建表单有一些优点:更快的应用程序启动,表单始终以已知良好状态显示,并且如果需要,以后更容易切换到一次显示表单的多个实例.

作为the VCL documentation explains,直接(或通过使用stock std :: auto_ptr)间接删除表单可能会导致内存错误,因为表单可能包含未处理的消息.为了避免这个问题,我编写了两个智能指针类,负责调用Release而不是delete.您可以从http://gist.github.com/671452下载它们.

原文链接:https://www.f2er.com/c/116302.html

猜你在找的C&C++相关文章