如果';,则不会触发GetAsyncKeyState(188)';有压力吗? 我试着写一个C++应用程序。 但是,如果我按下qwerty键盘上的,,则“GetAsyncKeyState(188)=-32767”不起任何作用。 出于某种原因,GetAsyncKeyState确实适用于字母表中的键(如a、b、c等) 但对于诸如“,”或“.”之类的符号,则不适用。
根据文档,来自如果';,则不会触发GetAsyncKeyState(188)';有压力吗? 我试着写一个C++应用程序。 但是,如果我按下qwerty键盘上的,,则“GetAsyncKeyState(188)=-32767”不起任何作用。 出于某种原因,GetAsyncKeyState确实适用于字母表中的键(如a、b、c等) 但对于诸如“,”或“.”之类的符号,则不适用。,c++,winapi,C++,Winapi,根据文档,来自GetAsyncKeyState()的返回值可以设置多个位,具体取决于之前是否按下该键,如果其他程序同时调用该函数,则返回值也可能有所不同 如果密钥已关闭,返回码(带符号的短码)将为负数,因此,如果您只想测试密钥是否已关闭,最简单的方法是: if (GetAsyncKeyState(VK_OEM_COMMA) < 0) { } if(GetAsyncKeyState(VK_OEM_逗号)
GetAsyncKeyState()
的返回值可以设置多个位,具体取决于之前是否按下该键,如果其他程序同时调用该函数,则返回值也可能有所不同
如果密钥已关闭,返回码(带符号的短码)将为负数,因此,如果您只想测试密钥是否已关闭,最简单的方法是:
if (GetAsyncKeyState(VK_OEM_COMMA) < 0) { }
if(GetAsyncKeyState(VK_OEM_逗号)<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;
}
#包括
int _tmain(int argc,_TCHAR*argv[]
{
对于(;;)
{
printf(“逗号为%s\n”,GetAsyncKeyState(VK_OEM_逗号)<0?”向下:“未向下”);
}
返回0;
}
告诉我们您是如何调用它的。您想做什么?更好的是GetAsyncKeyState(VK_*)&0x8000
。为什么更好?:)@JonathanPotter,更清楚的是,它是被检查的最高有效位。出于某种原因,GetAsyncKeyState确实适用于a、b、c。。。。但不像“,”或“.”如果有人给你一个关于如何正确检查状态的答案。。。