MOUSE_EVENT_RECORD 结构

重要

本文档介绍控制台平台功能,该功能已不再是生态系统蓝图的一部分。 我们不建议在新产品中使用此内容,但我们未来将无限期支持现有使用。 我们的首选最新解决方案侧重于虚拟终端序列,以实现跨平台方案中的最大兼容性。 可以在经典控制台与虚拟终端文档中找到有关此设计决策的详细信息。

描述控制台 INPUT_RECORD 结构中的鼠标输入事件。

语法

typedef struct _MOUSE_EVENT_RECORD {
  COORD dwMousePosition;
  DWORD dwButtonState;
  DWORD dwControlKeyState;
  DWORD dwEventFlags;
} MOUSE_EVENT_RECORD;

成员

dwMousePosition
包含游标位置的 COORD 结构,以控制台屏幕缓冲区的字符单元坐标为单位。

dwButtonState
鼠标按钮的状态。 最小有效位对应于最左侧的鼠标按钮。 下一个最小有效位对应于最右侧的鼠标按钮。 下一位表示左侧第二个鼠标按钮。 接下来的位从左到右与鼠标按钮对应。 如果按下了按钮,则位为 1。

为前五个鼠标按钮定义了以下常量。

含义
FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 最左侧的鼠标按钮。
FROM_LEFT_2ND_BUTTON_PRESSED 0x0004 左侧的第二个按钮。
FROM_LEFT_3RD_BUTTON_PRESSED 0x0008 左侧的第三个按钮。
FROM_LEFT_4TH_BUTTON_PRESSED 0x0010 左侧的第四个按钮。
RIGHTMOST_BUTTON_PRESSED 0x0002 最右侧的鼠标按钮。

dwControlKeyState
控制键的状态。 此成员可以是一个或多个以下值。

含义
CAPSLOCK_ON 0x0080 CAPS LOCK 指示灯亮起。
ENHANCED_KEY 0x0100 按键已增强。 请参阅注解
LEFT_ALT_PRESSED 0x0002 按下左 ALT 键。
LEFT_CTRL_PRESSED 0x0008 按下左 CTRL 键。
NUMLOCK_ON 0x0020 NUM LOCK 指示灯亮起。
RIGHT_ALT_PRESSED 0x0001 按下右 ALT 键。
RIGHT_CTRL_PRESSED 0x0004 按下右 CTRL 键。
SCROLLLOCK_ON 0x0040 SCROLL LOCK 指示灯亮起。
SHIFT_PRESSED 0x0010 按下 SHIFT 键。

dwEventFlags
鼠标事件的类型。 如果此值为零,则表示按下或释放了鼠标按钮。 否则,此成员是以下值之一。

含义
DOUBLE_CLICK 0x0002 所发生的双击操作的第二次单击(按钮按下)。 第一次单击将作为常规按钮按下事件返回。
MOUSE_HWHEELED 0x0008 水平鼠标滚轮已移动。

如果 dwButtonState 成员的高字包含正值,则滚轮向右旋转。 否则,滚轮向左旋转。
MOUSE_MOVED 0x0001 发生了鼠标位置更改。
MOUSE_WHEELED 0x0004 垂直鼠标滚轮已移动。

如果 dwButtonState 成员的高字包含正值,则滚轮向前旋转,远离用户。 否则,滚轮向后旋转,接近用户。

注解

当控制台处于鼠标模式 (ENABLE_MOUSE_INPUT) 时,鼠标事件将放置在输入缓冲区中。

每当用户移动鼠标或者按下或释放鼠标按钮之一时,就会生成鼠标事件。 仅当控制台组具有键盘焦点且游标位于控制台窗口边框内时,鼠标事件才会放置在控制台的输入缓冲区中。

示例

有关示例,请参阅读取输入缓冲区事件

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 WinConTypes.h (via WinCon.h, include Windows.h)

另请参阅

COORD

INPUT_RECORD

PeekConsoleInput

ReadConsoleInput

WriteConsoleInput