Win32 - 使对话框需要焦点/动作

时间:2012-10-02 06:28:39

标签: winapi dialog focus require z-order

在Win32编程中,MessageBox函数启动一个需要操作的对话框,在按“确定”之前,不能将焦点放在应用程序中的另一个窗口。我有一个我在Visual Studio 2008的资源编辑器中设计的对话框,问题是我可以单击启动它的菜单项,当该对话框仍然显示时我可以再次单击它并显示另一个他们此外,当对话框打开时,我可以使用我的应用程序的其余部分。

我想这样做,以便用户必须在我的自定义对话框上按“确定”或“取消”才能在应用程序中执行任何其他操作,就像它是MessageBox一样。我怎么做到这一点?是否有我可以在Dialog资源上设置的特定窗口样式或前样式?我试过WS_TOPMOST但是没有效果,我不知道还有什么可以尝试。

1 个答案:

答案 0 :(得分:1)

您的对话框需要使用DialogBox().DialogBoxParam()或任何直接对话模式启动器启动。此外,您需要确保在调用时将应用程序的顶级窗口作为父窗口提供。这样做应该使你的对话模态,而不是无模式。重要的是,您还要在资源脚本中使用WS_POPUP窗口样式作为对话框模板,但通常默认设置它,因此这可能不是您的问题。