1

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

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

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

我们试图想办法解决这个问题,而不必自己通过 WM_GETDLGCODE 进行所有导航。

有任何想法吗?直接的 C++ Win32 API,这些天孩子们都在使用的那些新奇的东西都没有。

TIA

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

4

1 回答 1

0

一位同事找到的答案是在无模式对话框中添加 DS_CONTROL 样式。

Raymond Chen 在这里讨论 DS_CONTROL 。

令人惊奇的是,您可以在 20 年中每天使用 Windows,并且仍然遇到您绝对从未听说过的东西。

于 2015-02-17T15:38:21.617 回答