1

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

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

4

1 回答 1

3

是的,它是 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
于 2013-06-05T20:39:07.180 回答