0
我使用win7 64bit。 我使用GetKeyboardState()來獲取鍵盤狀態。GetKeyboardState返回錯誤結果
BYTE keyState[256];
GetKeyboardState(keyState);
BOOL leftButtonClicked = GetKeyState(VK_LBUTTON);
如果單擊主WND內,每一件事情是確定的,但如果單擊主WND外,該leftButtonClicked仍然是正確的。
的MSDN說,
應用程序可以調用這個函數來獲取所有的虛擬鍵的當前狀態。狀態隨着線程從其消息隊列中移除鍵盤消息而改變。當鍵盤消息被髮布到線程的消息隊列時,狀態不會改變,也不會隨着鍵盤消息被髮布到其他線程的消息隊列或從其他線程的消息隊列中檢索到而改變。
但主要WND沒有收到WM_LBUTTONDOWN,那麼,爲什麼這個函數得到錯誤的結果呢? 還是我誤解了一些東西?
謝謝。
這不是「錯誤的結果」,它是「你沒有檢查鼠標的位置」 - 當你的窗口內發生的事情你只能得到VM_LBUTTONDOWN。但GetKeyState是通用的 - 它告訴你在提問時的狀態,它與你的窗口是否相關取決於你的應用程序來確定。 – 2013-03-01 16:00:19
我很困惑。你永遠不會看GetKeyboardState的結果。 – 2013-03-04 01:28:57