我正在做一个将旧的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