Delphi messagebox出现在其他表单后面

时间:2011-11-04 09:55:21

标签: delphi delphi-7 messagebox

我正在使用下面的代码在Delphi 7中创建一个消息框。但是我在屏幕上还有另一个表单FormStyle被设置为fsStayOnTop并且消息框出现在此表单后面。

有没有办法强制消息框显示在前面?

    if Application.MessageBox('Amessage here','Title', +MB_APPLMODAL + MB_ICONQUESTION + MB_YESNO) = IDNO then

3 个答案:

答案 0 :(得分:8)

在显示消息框之前调用NormalizeTopMosts

  

使用NormalizeTopMosts允许使用消息框或对话框   使用Windows API函数显示(例如MessageBox和   MessageDlg)直接出现在最顶层的表单之上。否则   最顶层的表单仍然位于顶部,可能会使消息框模糊不清。

(希望它可以在Delphi 7中使用。)

编辑:不确定downvote。如果它暗示OP应该使用原生MessageBox函数并将其父HWND设置为最顶层窗口 - 我会同意。但也许出于某种原因这是不可能的。

答案 1 :(得分:1)

Windows.pas中,您可以找到MessageBox()的更多标记:

MB_APPLMODAL = $00000000;
MB_SYSTEMMODAL = $00001000;
MB_TASKMODAL = $00002000;

MessageBox documentation

中了解它们

您甚至可以使用MB_TOPMOST标志。

答案 2 :(得分:0)

尝试使用MB_TASKMODAL标志而不是MB_APPLMODAL。