首页 > 解决方案 > GetKeyState 是否生成输入消息?

问题描述

const int KEY_0 = 0x30;
void main() {
    byte keyState[256];
    ZeroMemory(keyState, sizeof(byte) * 255);

    byte pressed = (keyState[KEY_0] & 0x80);
    while (pressed == false)
    {
        ZeroMemory(keyState, sizeof(byte) * 255);
        //GetKeyState(0);  // with this line, works well. It makes GetKeyboardState(KEY_0) works.
        //GetAsyncKeyState(KEY_0);
        GetKeyboardState(keyState);
        pressed = (keyState[KEY_0] & 0x80);
    };
}

我了解到此代码不起作用,因为GetKeyboardState()在处理键盘消息后生成了值。由于没有生成键盘消息,因此循环不会停止。这就是我的理解。

MSDN说:

应用程序调用 GetKeyState 以响应键盘输入消息。此函数在生成输入消息时检索键的状态。

我很困惑,因为上面的代码GetKeyState(0);运行良好,这意味着GetKeyState()关于键盘的消息?

我怎么能理解GetKeyState()GetKeyboardState()

标签: c++

解决方案


推荐阅读