如果任何256個虛擬鍵被按下那麼它是不是0。如果不爲0則退出子,放棄你的移動休息。 Windows會以正常的方式將密鑰發送到窗口,並且您的程序將正常處理它。
你必須運行for循環,無論你想中止其餘的動作。
GetKeyboardState功能
的GetKeyboardState功能拷貝256個的虛擬鍵映射到指定緩衝器的狀態。
語法
BOOL GetKeyboardState( PBYTE lpKeyState
);
參數
lpKeyState [in]指向接收用於每個虛擬鍵的狀態數據256字節數組。 返回值
如果函數成功,則返回值爲非零。
如果函數失敗,返回值爲零。要獲得擴展的錯誤信息,請調用GetLastError。
備註
應用程序可以調用這個函數來獲取所有的虛擬鍵的當前狀態。狀態隨着線程從其消息隊列中移除鍵盤消息而改變。當鍵盤消息被髮布到線程的消息隊列時,狀態不會改變,也不會隨着鍵盤消息被髮布到其他線程的消息隊列或從其他線程的消息隊列中檢索到而改變。 (例外:通過AttachThreadInput連接的線程共享相同的鍵盤狀態。)
當函數返回時,由lpKeyState參數指向的數組的每個成員都包含虛擬鍵的狀態數據。如果高位爲1,則密鑰關閉;否則,它已經到了。如果鍵是一個切換鍵,例如CAPS LOCK,則當鍵被切換時,低位爲1,如果鍵未被切換,則爲0。對於非切換鍵,低位是沒有意義的。據說切換鍵在打開時被切換。當鍵被切換時,鍵盤上的切換鍵指示燈(如果有的話)將會亮起,而當鍵未被切換時則會熄滅。
要檢索單個密鑰的狀態信息,請使用GetKeyState函數。要檢索單個鍵的當前狀態,而不管相應的鍵盤消息是否已從消息隊列中檢索到,請使用GetAsyncKeyState函數。
應用程序可以使用虛擬鍵碼常量VK_SHIFT,VK_CONTROL和VK_MENU作爲指向由lpKeyState指向的數組的索引。這給出了SHIFT,CTRL或ALT鍵的狀態,而無需區分左側和右側。應用程序也可以使用下面的虛擬鍵碼常量作爲指標對這些密鑰的左和右實例之間區別:
VK_LSHIFT
VK_RSHIFT
VK_LCONTROL
VK_RCONTROL
VK_LMENU
VK_RMENU
這些左和右區分常數可僅通過GetKeyboardState應用,SetKeyboardState,GetAsyncKeyState,GetKeyState和MapVirtualKey函數。