判断组合键可以在PreTranslateMessage虚函数中完成,也可以在wm_keydown中wm_syskeydown(主要处理alt键)中
eg:
SHORT GetKeyState( int nVirtKey ); 函数的使用详见MSDN
在PreTranslateMessage(MSG* pMsg)中判断是否同时按下“ctrl+L”或者“Alt+L”:
//Alt+L
if (pMsg->wParam == 'L' && (GetKeyState(VK_MENU)&0x8000) != 0)
{
MessageBox("Alt+L");
}
// Ctrl+L
if (pMsg->wParam == 'L' && (GetKeyState(VK_CONTROL)&0x8000) != 0)
{
MessageBox("Ctrl+L");
}
// 大写打开
if ((GetKeyState(VK_CAPITAL)&0x0001) != 0)
{
MessageBox("CapsLk is On");
}
WM_KEYDOWN WM_SYSKEYDOWN同上