控制台INPUT_RECORD结构中使用MOUSE_EVENT_RECORD结构来报告鼠标输入事件。
typedef struct _MOUSE_EVENT_RECORD { //更多
COORD dwMousePosition;
DWORD dwButtonState;
DWORD dwControlKeyState;
DWORD dwEventFlags;
} MOUSE_EVENT_RECORD;
会员
dwMousePosition
根据屏幕缓冲区的字符单元坐标指定光标的位置。
dwButtonState
指示鼠标按钮的状态。最低有效位对应于最左侧的鼠标按钮。下一个最低有效位对应于最右边的鼠标按钮。下一位表示下一个到最左侧的鼠标按钮。然后这些位从左到右对应到鼠标按钮。如果按下按钮,则为1。
为前五个鼠标按钮定义了以下常量:
FROM_LEFT_1ST_BUTTON_PRESSED
RIGHTMOST_BUTTON_PRESSED
FROM_LEFT_2ND_BUTTON_PRESSED
FROM_LEFT_3RD_BUTTON_PRESSED
FROM_LEFT_4TH_BUTTON_PRESSED
dwControlKeyState
表示控制键的状态。该成员可以是以下值的组合:
值 | 含义 |
RIGHT_ALT_PRESSED | 按ALT键。 |
LEFT_ALT_PRESSED | 按左ALT键。 |
RIGHT_CTRL_PRESSED | 右键CTRL键被按下。 |
LEFT_CTRL_PRESSED | 按住左侧的CTRL键。 |
CAPSLOCK_ON | CAPS LOCK指示灯亮起。 |
ENHANCED_KEY | 关键是增强了。 |
NUMLOCK_ON | NUM LOCK指示灯亮起。 |
SCROLLLOCK_ON | SCROLL LOCK指示灯亮起。 |
SHIFT_PRESSED | 按SHIFT键。 |
dwEventFlags
表示鼠标事件的类型。如果该值为零,则表示按下或释放鼠标按钮。否则,该值为以下之一:
值 | 含义 |
DOUBLE_CLICK | 发生双击的第二次点击(按钮按)。第一次点击作为常规按钮事件返回。 |
MOUSE_MOVED | 鼠标位置发生变化。 |
备注
当控制台处于鼠标模式(ENABLE_MOUSE_INPUT)时,鼠标事件会放置在输入缓冲区中。
只要用户移动鼠标,或按下或释放其中一个鼠标按钮,就会生成鼠标事件。仅当控制台组具有键盘焦点并且光标位于控制台窗口的边框内时,鼠标事件才会放置在控制台的输入缓冲区中。
也可以看看
INPUT_RECORD, PeekConsoleInput, ReadConsoleInput, WriteConsoleInput