0

我正在编写一个没有菜单的 Windows 应用程序。每次我按下 Alt 时,它都会收到 WM_ENTERMENULOOP 事件并挂起,直到我按下一个键。
我尝试过其他没有菜单的应用程序(例如 MS .chm 文件查看器),它们表现出相同的行为。
将事件转发到 DefWindowProc 或处理它没有区别。

如果没有菜单,有没有办法阻止 Windows 进入菜单循环?或者,有没有办法在收到事件后立即手动退出?

4

2 回答 2

3

如果要禁用进入菜单循环,请处理WM_SYSKEYDOWNWM_SYSKEYUP手动(不要将它们传递给)。DefWindowProc

此外,您可能希望处理WM_SYSCHAR并返回TRUE此消息,以避免像Alt+这样的击键发出哔哔声SomeKey

于 2012-07-24T06:37:21.583 回答
1

解析窗口消息并返回正确结果后的可伸缩代码,不调用 DefWindowProc。

case WM_SYSKEYDOWN:
case WM_SYSKEYUP:
case WM_SYSCHAR:
    return (LRESULT)1;

https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-syskeydown

https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-syskeyup

https://docs.microsoft.com/en-us/windows/win32/menurc/wm-syschar

返回值

如果应用程序处理此消息,它应该返回零。

于 2020-11-18T14:52:49.643 回答