我需要程式能夠同時處理多個鍵。為此,我撰寫了以下代碼:
case WM_KEYDOWN:{
int debug=pix.getMsg().lParam;
if(debug>=16 && debug<=23){
char lpKeyState[256];
ZeroMemory(lpKeyState,256);
char input[2];
int symNum=ToAsciiEx(pix.getMsg().wParam,pix.getMsg().lParam,(BYTE*)lpKeyState,(WORD*)input,0,GetKeyboardLayout(0));
if(symNum==1)
keyboardInput.push_back(input[0]);
}
break;
}
ToAsciiEx 接受硬體密鑰掃描代碼的第二個引數,它在 msdn 上說 WM_KEYDOWN 應該通過 lparam 傳遞它,但是 lparam 出現問題。我在哪里可以獲得硬體密鑰掃描代碼或有其他方法來實作這一點?
uj5u.com熱心網友回復:
如檔案中所述,第WM_KEYDOWN
16 位到第 23 位lParam
包含掃描碼。
要從中提取掃描碼lParam
,您可以使用以下行:
DWORD dwScanCode = ( lParam >> 16 ) & 0xFF;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470855.html