在WM_KEYDOWN消息中获取第30位的lParam参数

Ste*_*ano 3 c++ winapi bit-shift windows-messages

我需要获取通过WM_KEYDOWN消息传递的lParam参数的第30位.这里写的这个位让我知道之前是否按下了键.这个代码是正确的吗?

(lParam >> 30) & 1
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 8

我会用的lParam & 0x40000000.如果这是非零,则b30设置(我认为第三第一的32位,顺便说一句).并且它更有可能是一个{logical-and, compare}操作而不是{shift, logical-and, compare}.

请注意,即使您使用了一个体面的编译器,也很有可能生成更高效的代码,(lParam >> 30) & 1但为什么要承担风险呢?