消息框

时间:2009-03-27 11:49:53

标签: delphi messagebox

Delphi ; Application.MessageBox,Windows.MessageBox或Dialogs.MessageDlg之间有什么区别? 或者使用计算机内存效率更高?

6 个答案:

答案 0 :(得分:10)

Windows.MessageBox WinAPI MessageBox,Application.MessageBox是它的包装器。但是Dialogs.MessageDlg是一个VCL表单。因此,如果您担心内存或线程安全,前两个可能更适合。 MessageDlg OTOH更灵活,更易于使用(当然是恕我直言)。

答案 1 :(得分:2)

Windows MessageBox由操作系统本地化(是,否,取消...),MessageDlg可以手动本地化。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

如果我没记错的话,Delphi VCL消息框和Windows消息框之间有一个重要的区别 - 你可以指定阻止应用程序消息被服务的标志(例如MB_SYSTEMMODAL)。这对于显示需要“冻结”应用程序的错误非常有用 - 即使在屏幕上,Delphi MessageDlg仍然会触发定时器事件。参见:

MSDN MessageBox stuff

答案 4 :(得分:1)

内存使用不应该是消息框的问题。我个人更喜欢VCL表单(Dialogs.MessageBox),因为我可以从Consts.pas单元本地化它。我也喜欢它,因为我可以为它添加自定义控件,例如“不再显示此内容”的复选框以及其他类似的内容。

答案 5 :(得分:0)

他们都这样做 - 调用WinAPI函数MessageBox()。资源消耗的差异(如果有的话)是最小的。如果您非常在意,可以直接调用MessageBox() - 只需包含“使用Windows”。