win32操作系统api.GetAsyncKeyState(0x01)按下时返回32768而不是1

2024-07-01 08:31:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我今天尝试使用win32api,它只说如果按下了键,GetAsyncKeyState将返回1,否则返回0。你知道吗

但是当我用鼠标左键运行它时,它返回-32768? 我是通过打印命令找到的。 它没有破坏任何东西,因为我可以说如果leftmouse==-32768,但它仍然让我有点困惑。你能告诉我为什么吗?你知道吗


Tags: 命令鼠标左键win32apigetasynckeystateleftmouse
2条回答

正如documentation所述:

If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState.

-32768为0x8000,表示高位已设置。与你描述的“我用鼠标左键运行它”相符。您按下按钮,这就是GetAsyncKeyState()报告的内容。无论你读到什么,说“GetAsyncKeyState将返回1如果按键或0如果没有”是错误的。你知道吗

上面写着:

If the most significant bit is set, the key is down.

有符号整数中最重要的位是符号位。因此,您可以将其理解为,如果键为down,则函数返回负值。你知道吗

您不应该测试== -32768,而应该测试< 0。你知道吗

相关问题 更多 >

    热门问题