在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的默認響聲。