Windows Server 2003和Windows7中的MessageBox外观

时间:2015-07-07 11:21:51

标签: delphi winapi delphi-7

我们正在研究Delphi 7.最近我们已经从Windows Server迁移到Windows 7.我们通过MessageBox处理应用程序中的所有错误消息。 MessageBox外观在Windows Server 2003和Windows 7中有所不同。请查看下面的屏幕截图,其中显示了Windows Server 2003和Windows 7的不同。

MessageBox Windows Server 2003 and Windows 7

我们希望Windows 7消息框与Windows服务器一样显示。

1 个答案:

答案 0 :(得分:4)

MessageBox API由系统实施。它是Win32在user32模块中实现的对话框。所以你只是选择标准的Windows对话框。如果您尝试在Windows 7上复制旧的XP / 2003对话框,您的应用程序将显得不合适。

现在,如果你绝对不顾一切地复制XP / 2003外观,那么你就不能通过MessageBox来做到这一点。您需要创建自己的对话框。创建表单。为图标添加TImage,为文本添加标签,以及您需要的任何按钮。使用ShowModal显示表单。实际上,Dialogs单位有一个函数可以创建这样的表单CreateMessageDialog

var
  MessageBoxForm: TForm;
....
MessageBoxForm := CreateMessageDialog('Your message goes here', mtError, [mbOK]);
Try
  MessageBoxForm.ShowModal;
Finally
  MessageBoxForm.Free;
End;

甚至还有一个简单的包装器允许这个单行:

MessageDlg('Your message goes here', mtError, [mbOK], 0);

这就是如何做你要求的但我不能认为这是一个好主意。时代在变,通常最好与时俱进。