我需要获取通过WM_KEYDOWN消息传递的lParam参数的第30位。这个写为here的位允许我知道之前是否按下了键。这个代码是否正确得到它?
(lParam >> 30) & 1
答案 0 :(得分:8)
我会使用lParam & 0x40000000
。如果那不是零,则设置b30
(顺便说一句,我认为三十二的三十第一个位)。并且它更有可能是{logical-and, compare}
操作而不是{shift, logical-and, compare}
。
请注意,即使你使用(lParam >> 30) & 1
,一个体面的编译器也很有可能生成更高效的代码,但为什么要承担风险呢?