0

我尝试编写一个 C++ 应用程序。但是,如果我按,在我的 qwerty 键盘上, 'GetAsyncKeyState(188) == -32767' 不会做任何事情。出于某种原因,GetAsyncKeyState 确实适用于字母表中的键(如 a、b、c 等),但不适用于“、”或“。”等符号。

4

1 回答 1

2

根据文档,返回值GetAsyncKeyState()可以设置多个位,具体取决于之前是否按下了键,并且如果其他程序同时调用该函数,也可能会有所不同。

如果密钥已关闭,则返回代码(这是一个有符号的短)将为负数,因此如果您只想测试密钥是否已关闭,最简单的方法是:

if (GetAsyncKeyState(VK_OEM_COMMA) < 0) { }

编辑:这是一些适用于我的示例代码:

#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    for (;;)
    {
        printf("comma is %s\n", GetAsyncKeyState(VK_OEM_COMMA) < 0 ? "down" : "not down");
    }
    return 0;
}
于 2013-08-26T01:08:45.823 回答