如何获得SHORT的高位和低位?

Dyl*_*lan 6 c++ winapi short

函数GetKeyState()返回一个包含密钥状态的SHORT(高位中的上/下,并以低位切换).我如何获得这些价值观?

Chr*_*isV 11

简单的位操作将起作用.SHORT是16位整数,因此要获得低位和高位,您可以执行以下操作:

lowBit = value & 1;
highBit = ((unsigned short) value) >> 15;
Run Code Online (Sandbox Code Playgroud)

另请注意,LOBYTE和HIBYTE宏用于将SHORT分解为低位和高位字节,而不是测试字节中的各个位.


Han*_*ant 6

这不是你如何使用GetKeyState()的返回值.这样做是这样的:

SHORT state = GetKeyState(VK_INSERT);
bool down = state < 0;
bool toggle = (state & 1) != 0;
Run Code Online (Sandbox Code Playgroud)