Получить 30-й бит параметра lParam в сообщении WM_KEYDOWN - PullRequest
3 голосов
/ 30 мая 2011

Мне нужно получить 30-й бит параметра lParam, передаваемого с сообщением WM_KEYDOWN. Этот бит, как написано здесь , позволяет мне узнать, была ли клавиша нажата раньше. Правильно ли этот код получить?

(lParam >> 30) & 1

1 Ответ

8 голосов
/ 30 мая 2011

Я бы просто использовал lParam & 0x40000000. Если это не ноль, то b30 было установлено (кстати, я считаю, что тридцать первый бит из тридцати двух). И есть большая вероятность, что это будет операция {logical-and, compare}, а не {shift, logical-and, compare}.

Имейте в виду, есть хороший шанс, что приличный компилятор в любом случае сгенерирует более эффективный код, даже если вы используете (lParam >> 30) & 1, но зачем рисковать?

...