如果没有点击按钮,MFC鼠标动作OnMouseMove事件nFlags值?

时间:2013-06-05 20:29:20

标签: c++ c++11 mfc onmousemove

我正在开发一个将旧的Windows 95 MFC代码转换为C ++ 11的项目。我想知道,如果在移动过程中没有点击鼠标按钮,那么传递给OnMouseMove()函数的UINT nFlags的值是多少?

我对MFC不太熟悉,而且我无法访问Windows机器自行进行任何测试,因此我对此功能行为的理解可能不正确。我知道如果左键单击,中间或右侧有一些特殊的系统值,OnMouseMove函数将在nFlags中接收(如MK_LBUTTON,即0x0001)。我想知道nFlags的价值是什么,如果没有特别点击并且鼠标移动了,它只是0x0000吗?非常感谢,非常感谢您对此事的任何帮助!

1 个答案:

答案 0 :(得分:3)

是的,它是0。

但我认为测试记录的可能值是最安全的,因此如果将来更改其用法,“0假设”代码不会中断。根据VSDN的MSDN,这些是可能的值:

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