为什么在按下方向箭头后,函数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;
}
答案 0 :(得分:4)
此函数返回的键状态随线程读取而变化 来自其消息队列的关键消息。状态不反映 与硬件相关的中断级状态。使用 GetAsyncKeyState函数用于检索该信息。
由于您没有处理邮件,因此您需要拨打GetAsyncKeyState
。
测试按下的键是这样的:
if (GetAsyncKeyState(VK_UP) < 0)
// key is pressed
答案 1 :(得分:2)
GetKeyState不会返回&#34;类似布尔值的&#34;。 看一下文档:
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;如果结果为char,则为-127 / -128。检查&#34;返回值&#34;文档的一部分,看看你想要什么
答案 2 :(得分:0)
,还有GetKeyState()函数,可用于普通字符键,例如'a'〜'Z'。 (不区分大小写)
if (GetKeyState('A' & 0x8000)
{
// code for Pressed
}
else
{
// code for Not Pressed
}