2010-06-19 52 views
3

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

回答

4

我想你想使系统模态为MB_SYSTEMMODAL,如here所述。

和/或使最上面的窗口成为MessageBox的所有者。

2

您是否需要相同的消息框已经打开到顶部?还是一个新的开放其他窗口之上?

如果你想的一样的MessageBox这已经是开放的只是把顶端:

我想,如果你使用EnumThreadWindows你可以得到一个MessageBox窗口句柄,但我从来没有尝试过自己。所以,如果这样做的话,你可以在呼叫BringWindowToTop时使用它的窗口句柄。

如果获取MessageBox句柄不适合您,您可以简单地创建自己的窗口,它看起来像是一个消息框,然后调用BringWindowToTop来代替。

如果你想弹出顶部一个新的MessageBox:如果你想有一个新的MessageBox每次可以使用MB_SYSTEMMODAL旗为MessageBox文档中描述的时间

。据说在Vista和以上版本中忽略了MB_TOPMOST

相关问题