我按下方向箭头ON后,为什么函数
GetKeyState
继续给我一个大于0的值?
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
for(int i = 0; i < 1000; ++i)
{
if(GetKeyState(VK_UP))
{
cout << "UP pressed" << endl;
}
else
cout << "UP not pressed" << endl;
Sleep(150);
}
return 0;
}
来自文档:
该函数返回的键状态随着线程读取而改变 来自其消息队列的关键消息。该状态并不反映 与硬件相关的中断级状态。使用 GetAsyncKeyState 函数来检索该信息。
由于您不处理消息,因此您需要拨打
GetAsyncKeyState
。
测试按下的按键如下:
if (GetAsyncKeyState(VK_UP) < 0)
// key is pressed
GetKeyState 不会返回“类似布尔值”。 看一下文档:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646301(v=vs.85).aspx
看来你需要这样做:
if (GetKeyState(VK_UP) & 0x8000)
{
//Your code
}
else
{
// Not pressed
}
如果结果是短整型,则为 0x8000;如果结果为字符,则为 -127/-128。检查文档的“返回值”部分,看看你想要什么
此外,GetKeyState() 函数可用于普通字符键,如 'a' ~ 'Z'。 (不区分大小写)
if (GetKeyState('A' & 0x8000)
{
// code for Pressed
}
else
{
// code for Not Pressed
}