MFC Движение мыши Событие OnMouseMove Значение nFlags, если ни одна кнопка не нажата?

Я работаю над проектом по переводу старого кода Windows 95 MFC на C ++ 11. Мне было интересно, если никакие кнопки мыши не нажимаются во время перемещения, каково значение UINT nFlags, переданного в функцию OnMouseMove ()?

Я не очень знаком с MFC, и у меня нет доступа к машине с Windows, чтобы самостоятельно выполнять какие-либо тесты, поэтому моё понимание поведения этих функций может быть неправильным. Я знаю, что если щелкнуть левой, средней или правой кнопкой мыши, есть специальные системные значения, которые функция OnMouseMove получит в nFlags (например, MK_LBUTTON, который равен 0x0001). Мне было интересно, каким будет значение для nFlags, если ничего не было нажато, а мышь двигалась, это просто 0x0000? Большое спасибо, любая помощь в этом вопросе очень ценится!

1

Решение

Да, это 0.

Но я думаю, что было бы безопаснее проверить документированные возможные значения, поэтому, если его использование изменится в будущем, код «0 в предположении» не сломается. Согласно MSDN для VS2012, это возможные значения:

MK_CONTROL   Set if the CTRL key is down.
MK_LBUTTON   Set if the left mouse button is down.
MK_MBUTTON   Set if the middle mouse button is down.
MK_RBUTTON   Set if the right mouse button is down.
MK_SHIFT     Set if the SHIFT key is down.

где они в настоящее время определены (в Winuser.h) как:

#define MK_LBUTTON          0x0001
#define MK_RBUTTON          0x0002
#define MK_SHIFT            0x0004
#define MK_CONTROL          0x0008
#define MK_MBUTTON          0x0010
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]