如果按下“,”,GetAsyncKeyState(188)不会触发?

时间:2013-08-26 01:03:53

标签: c++ winapi

我尝试编写一个C ++应用程序。 但是,如果我在qwerty键盘上按,'GetAsyncKeyState(188)== -32767'什么也不做。 由于某种原因,GetAsyncKeyState适用于字母表中的键(如a,b,c等) 但不适用于','或'。'等符号。

1 个答案:

答案 0 :(得分: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;
}