描述控制台输入缓冲区中的输入事件。可以使用ReadConsoleInput或PeekConsoleInput函数从输入缓冲区读取这些记录,也可以使用WriteConsoleInput函数将这些记录写入输入缓冲区。
类型声明:
typedef struct _INPUT_RECORD { WORD EventType; union { KEY_EVENT_RECORD KeyEvent; MOUSE_EVENT_RECORD MouseEvent; WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; MENU_EVENT_RECORD MenuEvent; FOCUS_EVENT_RECORD FocusEvent; } Event; } INPUT_RECORD;EventType
输入事件类型的句柄和存储在Event成员中的事件记录。
该成员可以是以下值之一。
值含义FOCUS_EVENT 0x0010该事件成员包含一个FOCUS_EVENT_RECORD结构。这些事件在内部使用,应该被忽略。KEY_EVENT 0x0001该事件成员包含一个KEY_EVENT_RECORD结构有关键盘事件的信息。MENU_EVENT 0x0008该事件成员包含一个MENU_EVENT_RECORD结构。这些事件在内部使用,应该被忽略。MOUSE_EVENT 0x0002所述事件构件包含MOUSE_EVENT_RECORD结构用约鼠标移动或按键按压事件的信息。WINDOW_BUFFER_SIZE_EVENT 0x0004该事件成员包含一个WINDOW_BUFFER_SIZE_RECORD结构有关控制台屏幕缓冲区的新大小信息。事件 事件信息。此成员的格式取决于EventType成员指定的事件类型。
描述控制台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大写锁定被打开ENHANCED_KEY 0x0100扩展键被按下LEFT_ALT_PRESSED 0x0002按下左ALT键。LEFT_CTRL_PRESSED 0x0008按下左CTRL键。NUMLOCK_ON 0x0020数字锁定被打开RIGHT_ALT_PRESSED 0x0001按下右ALT键。RIGHT_CTRL_PRESSED 0x0004按下右CTRL键。SCROLLLOCK_ON 0x0040滚动锁定被打开SHIFT_PRESSED 0x0010按下SHIFT键。dwEventFlags 鼠标事件的类型。如果此值为零,则表示正在按下或释放鼠标按钮。否则,此成员是以下值之一。
值含义DOUBLE_CLICK 0x0002双击的第二次单击(按下按钮)发生。第一次单击作为常规按钮事件返回。MOUSE_HWHEELED 0x0008水平鼠标滚轮被移动了。如果dwButtonState成员的高位字包含正值,则轮子向右旋转。否则,车轮向左旋转。MOUSE_MOVED 0x0001发生了鼠标位置的变化。MOUSE_WHEELED 0x0004垂直鼠标滚轮被移动。如果dwButtonState成员的高位字包含正值,则轮向前旋转,远离用户。否则,车轮向后旋转,朝向用户。从控制台输入缓冲区读取数据并将其从缓冲区中删除。
函数声明:
BOOL WINAPI ReadConsoleInput( _In_ HANDLE hConsoleInput, _Out_ PINPUT_RECORD lpBuffer, _In_ DWORD nLength, _Out_ LPDWORD lpNumberOfEventsRead ); 功能: 从控制台输入缓冲区读取数据并将其从缓冲区中删除。 参数: hConsoleInput 控制台输入缓冲区的句柄。句柄必须具有GENERIC_READ访问权限。 lpBuffer 指向接收输入缓冲区数据的INPUT_RECORD结构数组的指针。 nLength 数组元素中lpBuffer参数 指向的数组大小。 lpNumberOfEventsRead 指向接收读取的输入记录数的变量的指针。 返回值: 如果函数成功,则返回值为非零值。 如果函数失败,则返回值为零。要获取扩展错误信息,请调用GetLastError。官方参考网址:https://docs.microsoft.com/en-us/windows/console/readconsoleinput