问题很简单,通常情况下,如果用户按下Alt +任何键并且没有与之相关联的热键,程序将产生MessageBeep声音。我可以调用哪些API函数来避免这种情况?
在我的主WndProc上处理WM_KEYDOWN,WM_KEYUP,WM_SYSKEYDOWN和WM_SYSKEYUP,都返回0也不起作用。
你要找的是WM_MENUCHAR。可以在MSDN上搜索(>message beep shortcut<或>message beep accelerator<)。
http://msdn.microsoft.com/en-us/library/ms646349(VS.85).aspx
编辑:似乎只适用于活动菜单。
编辑2:非常有效。注意MSDN:
处理此消息的应用程序应在返回值的高位字中返回以下值之一。
我使用了MNC_CLOSE << 16
。
我认为这是一个系统设置。控制面板+声音+声音选项卡。不确定哪个会做到这一点,我关闭了很多。也许是“程序错误”。