在模式对话框托管的无模式对话框中处理Tab和Alt + *键

时间:2015-02-14 20:09:37

标签: windows dialog keystroke modeless

我们有一组无模式对话框,它们是模态对话框的子对象。一次只出现一个无模式对话框;其他人都是隐藏的。这由模态对话框中的元素控制。如果你想到一个Windows属性表,你就会有这个想法。

除Tab键和Alt + char热键外,一切正常。他们没有做他们应该做的事情,即在主动无模式对话框中导航控件。他们只是发出哔哔声。

在正常情况下,即应用程序窗口拥有的无模式对话框,这是通过在应用程序的消息循环中调用IsDialogMessage()来处理的。我们无法做到这一点,因为它不是我们的消息循环--Windows正在运行消息循环来为模式对话框提供服务,我们得到的只是发送到对话框proc的消息。

我们正试图想办法处理这个问题,而不必通过WM_GETDLGCODE自行完成所有导航。

有什么想法吗?直接C ++ Win32 API,这些都不是孩子们现在所使用的新奇东西。

TIA

附加信息:进一步调查显示Windows正在将导航键应用于主机模式对话框,而不是子模式对话框。我们需要他们去无模式对话框。

1 个答案:

答案 0 :(得分:0)

一位同事发现的答案结果是将DS_CONTROL样式添加到无模式对话框中。

Raymond Chen讨论了DS_CONTROL here

令人惊讶的是,你可以每天使用Windows 20年,但仍然遇到了你从未听说过的东西。