GetKeyState 函数?

use*_*107 3 c++ keyboard winapi keypress

为什么在我按下方向箭头 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;
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 6

文档

当线程从其消息队列中读取关键消息时,从该函数返回的关键状态会发生变化。该状态不反映与硬件关联的中断级状态。使用 GetAsyncKeyState 函数来检索该信息。

由于您不是在处理消息,因此您需要调用GetAsyncKeyState

测试按下的键,如下所示:

if (GetAsyncKeyState(VK_UP) < 0)
    // key is pressed
Run Code Online (Sandbox Code Playgroud)