在windows中,随便打开一个窗口,然后按alt + 1之类的都会产生“冬”的一声,这是windows的默认响声。在游戏中,有时逻辑要实现一些快捷键要用到alt+其他键的组合。这样就会产生默认响声。下面说一下如何屏蔽这种声音。
在网上基本上找不到相关的资料。我试过直接在消息循环不处理这方面的响应,但是还是听到这样的声音,后来用钩子程序处理,就解决这个问题了。下面是相关代码:
这个是键盘钩子函数:
LRESULT CALLBACK KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION)
{
switch (wParam)
{
case '1':
case '2':
case '3':
……
{
if (GetKeyState(VK_MENU) & 0x8000)
{
//处理这些按键事件。
return 1; //这里一定要return 1,否则会被程序消息处理到。
}
}
}
}
return ::CallNextHookEx(g_hKeyboardHook, nCode, wParam, lParam);
}
这样就可以完全屏蔽了windows的默认响声。