使MessageBox保持在其他窗口之上

时间:2010-06-19 20:57:34

标签: winapi windows

我有一个调用MessageBox的TimerProc。我希望MessageBox保持在其他窗口之上。因此,例如,父窗口设置计时器,然后我移动另一个窗口。当计时器触发时,我希望MessageBox出现在覆盖应用程序的窗口顶部。这可能吗,我应该怎么做呢?

2 个答案:

答案 0 :(得分:4)

我认为您希望将系统模式设为MB_SYSTEMMODAL,如here所述。

和/或使顶部的窗口成为MessageBox的所有者。

答案 1 :(得分:2)

您是否需要相同的消息框已经打开以进入顶部?或者在其他窗口上方打开一个新的?

如果您想要已经打开的相同MessageBox刚刚登上顶部:

如果您使用MessageBox,我认为您可以获得EnumThreadWindows窗口句柄但我自己从未尝试过。因此,如果可行,您可以在调用BringWindowToTop时使用其窗口句柄。

如果获取MessageBox句柄不适合你,你可以简单地创建一个看起来像消息框的窗口,然后再调用BringWindowToTop

如果您想在顶部弹出一个新的MessageBox:

如果您希望每次都使用MessageBox文档中所述的MB_SYSTEMMODAL标志,那么您需要一个新的MessageBox。据说在Vista及以上版本中忽略了MB_TOPMOST