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