请解释win32中GetAsyncKeyState()函数的返回值

时间:2014-03-26 14:55:12

标签: c# c++ vb.net

当我们在调试会话期间调用/粘贴“GetAsyncKeyState(Keys.F4)”进入VS2013的监视窗口时,它返回204996608.我查看了MSDN文档,但我无法弄清楚如何理解这个数字。它试图告诉我什么?

2 个答案:

答案 0 :(得分:3)

来自http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx

如果函数成功,则返回值指定自上次调用GetAsyncKeyState以来是否按下了键,以及该键当前是向上还是向下。如果设置了最高有效位,则键为关闭,如果设置了最低有效位,则在上一次调用GetAsyncKeyState之后按下该键。但是,你不应该依赖这最后的行为;有关更多信息,请参阅备注。

这意味着您需要检查最重要的位以查看是否按下了该键:

bool f4Pressed = (GetAsyncKeyState(Keys.F4) & (1 << 15)) != 0;

答案 1 :(得分:1)

GAKS返回一个短整数,即。 16位整数,是否设置了MSB。

因此,只需让您的返回类型正确,然后测试它是否为负。