我正在使用下面的代码在Delphi 7中创建一个消息框。但是我在屏幕上还有另一个表单FormStyle
被设置为fsStayOnTop
并且消息框出现在此表单后面。
有没有办法强制消息框显示在前面?
if Application.MessageBox('Amessage here','Title', +MB_APPLMODAL + MB_ICONQUESTION + MB_YESNO) = IDNO then
答案 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;
中了解它们
您甚至可以使用MB_TOPMOST
标志。
答案 2 :(得分:0)
尝试使用MB_TASKMODAL标志而不是MB_APPLMODAL。