如果没有按钮被点击,OnMouseMove事件的nFlags值



我正在做一个将旧的Windows 95 MFC代码翻译成c++ 11的项目。我想知道,如果在移动过程中没有单击鼠标按钮,传递到OnMouseMove()函数的UINT nFlags的值是多少?

我不是很熟悉MFC,我没有访问Windows机器做任何测试自己,所以我对这个函数的行为的理解可能是不正确的。我知道,如果它是左键点击,中间或右边有特殊的系统值,OnMouseMove函数将在nFlags中接收(如MK_LBUTTON,这是0x0001)。我想知道nFlags的值是什么,如果没有特别的点击,鼠标已经移动,它只是0x0000吗?非常感谢,对此事的任何帮助都是非常感激的!

是的,是0。

但是我认为测试文档中可能的值是最安全的,所以如果将来它的用法发生了变化,"0假设"代码不会中断。根据VS2012的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

最新更新