【发布时间】:2019-10-08 06:23:45
【问题描述】:
我今天尝试使用win32api,它只是说GetAsyncKeyState如果按键被按下则返回1,否则返回0。
但是当我用鼠标左键运行它时它返回-32768? 我通过打印所述命令发现了这一点。 它不会破坏任何东西,因为我只能说如果 leftmouse==-32768 但它仍然让我有点困惑。你能告诉我为什么吗?
【问题讨论】:
我今天尝试使用win32api,它只是说GetAsyncKeyState如果按键被按下则返回1,否则返回0。
但是当我用鼠标左键运行它时它返回-32768? 我通过打印所述命令发现了这一点。 它不会破坏任何东西,因为我只能说如果 leftmouse==-32768 但它仍然让我有点困惑。你能告诉我为什么吗?
【问题讨论】:
如果设置了最高有效位,则键向下。
有符号整数中的最高有效位是符号位。因此,您可以将其解读为如果按键按下,该函数将返回负值。
你不应该测试== -32768,而应该测试< 0。
【讨论】:
< 0。
正如documentation 所说:
如果设置了最高有效位,则按键按下,如果设置了最低有效位,则在上次调用
GetAsyncKeyState后按下了按键。
-32768 为 0x8000,表示设置了高位。这符合您对“我用鼠标左键运行它”的描述。您按住按钮,这就是 GetAsyncKeyState() 报告的内容。无论您读到什么“如果按下键,GetAsyncKeyState 将返回 1,否则返回 0”是错误的。
【讨论】: