我今天尝试使用win32api,它只说如果按下该键,GetAsyncKeyState将返回1;否则,则返回0。
但是当我用鼠标左键运行它时,它返回-32768吗? 我通过打印上述命令发现了这一点。 它不会破坏任何内容,因为我只能说是否leftmouse ==-32768,但这仍然让我有些困惑。你能告诉我为什么吗?
答案 0 :(得分:1)
如果设置了最高有效位,则按键按下。
有符号整数中的最高有效位是符号位。因此,您可以将其理解为表明如果按下该键,该函数将返回负值。
您不应测试== -32768
,而应测试< 0
。
答案 1 :(得分:0)
如果设置了最高有效位,则该键处于按下状态;如果设置了最低有效位,则在上次调用
GetAsyncKeyState
之后按下了该键。
-32768是0x8000,这意味着高位已设置。这与您对“我用鼠标左键运行它”的描述相符。您按住按钮不放,这就是GetAsyncKeyState()
报告的内容。不论显示的内容是“如果按下该键,GetAsyncKeyState都将返回1,否则将返回0”。