在的的Delphi ;什么是Application.MessageBox,Windows.MessageBox或Dialogs.MessageDlg之间的区别是什么? 或者是更有效地使用计算机存储器?

有帮助吗?

解决方案

Windows.MessageBox的的WinAPI的消息框,Application.MessageBox是围绕它的包装。然而Dialogs.MessageDlg是一个VCL形式。所以,如果您担心内存或线程安全,前两个可能更适合。的MessageDlg OTOH更灵活,更容易使用(IMHO,当然)。

其他提示

的Windows消息框是由OS(是,否,取消...)本地化的MessageDlg可以用手本地化。

你为什么关心一个消息框使用的内存少量?还有,你应该自己有关许多其他的东西写Delphi应用程序时。在任何情况下,据我所知,这些都是围绕Windows的MessageBox的API都瘦包装。

如果我没有记错,有bewteen德尔福VCL消息框和Windows的人一个重要的区别 - 你可以指定地址的标志,从被服务(如MB_SYSTEMMODAL)停止应用程序的消息。德尔福的MessageDlg仍将火灾计时器事件,甚至同时在屏幕上 - 你需要“冻结”您的应用程序这可能显示错误非常有用。参见:

MSDN MessageBox的东西

内存使用不应该与消息框这样的问题。我个人比较喜欢的VCL形式(Dialogs.MessageBox),因为我可以从Consts.pas单位本地化它。我也是从事实,我可以添加自定义控件到它,喜欢复选框“不要再显示此”和其他的东西像这样喜欢它。

他们都做同样的 - 调用WinAPI的函数的MessageBox()。在资源消耗的区别,如果任何是最小的。如果你这么在乎你可以调用的MessageBox()直接 - 只包括“使用Windows”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top