我得到以下代碼用于測驗目的:
bool test = false;
if (GetAsyncKeyState(VK_LCONTROL) && GetAsyncKeyState(VK_F2) & 1) {
test = !test;
std::cout << test << std::endl;
}
現在我想要發生的是當我按住左控制元件然后按 F2 時,說明正在被正確處理。問題是如果我按住 LCTRL 然后 F2 或當我按住 F2 然后按 LCTRL 或當我按 LCTRL 然后按 F2 或當我按 F2 然后 LCTRL 時條件變為真。因此,無論按下哪個按鈕的哪種組合,我使用的條件總是結果為真。
我希望你們中的一些人在某個時候遇到過這個問題,并且可以提供一些非常感謝的見解。
uj5u.com熱心網友回復:
GetAsyncKeyState在其回傳值中回傳多個事物。檢查鍵是否關閉的正確方法是:bool lctrldown = GetAsyncKeyState(VK_LCONTROL) < 0;
話雖如此,等待用戶按下F2意味著輪詢和輪詢是糟糕的!如果你只關心F2你自己的視窗,那么你應該TranslateAccelerator在你的訊息回圈或句柄中使用WM_KEYDOWN。
對于全域解決方案,請使用RegisterHotKey或低級鍵盤 hook。
在WM_KEYDOWN或 掛鉤的情況下,當您收到通知時,F2您應該使用 來檢查控制鍵的狀態GetAsyncKeyState。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/402103.html
