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

时间:2011-05-30 12:57:35

标签: c++ winapi windows-messages bit-shift

我需要获取通过WM_KEYDOWN消息传递的lParam参数的第30位。这个写为here的位允许我知道之前是否按下了键。这个代码是否正确得到它?

(lParam >> 30) & 1

1 个答案:

答案 0 :(得分:8)

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

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