我正在编程一个没有菜单的Windows应用程序。每次按Alt键,它都会收到WM_ENTERMENULOOP事件并挂起,直到按下一个键。
我试过没有菜单的其他应用程序(如MS .chm文件查看器),它们表现出相同的行为。
把事件转发到DefWindowProc或处理它没有区别。按Alt键挂起应用程序
如果没有菜单,有没有办法阻止Windows进入菜单循环?或者,一旦收到事件,是否有办法手动退出?
我正在编程一个没有菜单的Windows应用程序。每次按Alt键,它都会收到WM_ENTERMENULOOP事件并挂起,直到按下一个键。
我试过没有菜单的其他应用程序(如MS .chm文件查看器),它们表现出相同的行为。
把事件转发到DefWindowProc或处理它没有区别。按Alt键挂起应用程序
如果没有菜单,有没有办法阻止Windows进入菜单循环?或者,一旦收到事件,是否有办法手动退出?
过程WM_SYSKEYDOWN
和WM_SYSKEYUP
如果要禁用进入菜单循环,请手动(不要将它们传递给DefWindowProc
)。
此外,您可能需要处理WM_SYSCHAR
和这个消息,返回TRUE
避免蜂鸣声击键像Alt键 + SomeKey
请勿阻止Alt +空格。当我的应用程序禁用标准的Windows功能时,它让我不知所措(我敢肯定其他人)! – Deanna 2012-07-24 10:25:15
我没有阻止它。我使用WM_SYS *消息来使其工作,而不用“挂起”Alt和后续按键之间的所有内容。 – 2012-07-24 10:28:35
要添加,输入一个菜单循环会使'WM_ENTERIDLE'消息不断发送到'WindowProc'。不调用'DefWindowProc'修复此挂起,但是,它阻止正常操作(例如,Alt + F4不再关闭应用程序)。 – 2016-08-31 09:14:53
你有一个菜单:系统菜单('WS_SYSMENU')。并且应用程序不会挂起。菜单循环正在泵送消息。 – 2012-07-24 02:09:18
因此它进入系统菜单的菜单循环而不显示它?这非常有用。猜猜我必须没有这个图标。谢谢。 – 2012-07-24 02:26:33
如果您按Alt键输入空格,系统菜单将显示。这种“等待”状态是为什么消息框有时会卡住不可见,直到你再次点击alt键。 – 2012-07-24 03:29:59