window.h中定义的常用结构体
COORD(坐标结构体)
typedef struct _COORD
{
SHORT X;
SHORT Y;
} COORD;
CONSOLE_SCREEN_BUFFER_ INFO(控制台窗口信息结构体)
typedef struct _CONSOLE_SCREEN_BUFFER_INFO
{
COORD dwSize; //缓冲区大小
COORD dwCursorPosition; //当前光标位置
WORD wAttributes; //字符属性
SMALL_RECT srWindow; //当前窗口显示的大小和位置
COORD dwMaximumWindowSize; // 最大的窗口缓冲区大小
} CONSOLE_SCREEN_BUFFER_INFO;
_SMALL_RECT(表示矩形区域的结构体)
typedef struct _SMALL_RECT //表示矩形区域的结构体
{
SHORT Left; //左边界
SHORT Top; //上边界
SHORT Right; //右边界
SHORT Bottom; //下边界
} SMALL_RECT;
/*
微软官方的说法是
Left 区域的左上顶点的X坐标
Top 区域的左上顶点的Y坐标
Right 区域的右下顶点的X坐标
Bottom 区域的右下顶点的Y坐标
*/
_CONSOLE_CURSOR_INFO(光标信息结构体)
typedef struct _CONSOLE_CURSOR_INFO //光标信息结构体
{
DWORD dwSize; //光标尺寸大小,范围是1~100
BOOL bVisible; //表示光标是否可见,true表示可见
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
_INPUT_RECORD(输入事件结构体)
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的值有5种
KEY_EVENT 代表Event包含一个KEY_EVENT_RECODE结构体
MOUSE_EVENT 代表Event包含一个MOUSE_EVENT_RECODE结构体
WINDOW_BUFFER_SIZE_EVENT 代表Event包含一个WINDOW_BUFFER_SIZE_EVENT_RECORD结构体
MENU_EVENT 代表Event包含一个MENU_EVENT_RECORD结构体
FOCUS_EVENT 代表Event包含一个FOCUS_EVENT_RECORD结构体
*/
_KEY_EVENT_RECORD(键盘事件结构体)
typedef struct _KEY_EVENT_RECORD //键盘事件结构体
{
BOOL bKeyDown; //按键状态,true代表键按下,false代表键释放
WORD wRepeatCount; //按键次数
WORD wVirtualKeyCode; //虚拟键
WORD wVirtualScanCode; //虚拟键扫描码
union {
WCHAR UnicodeChar; //解释成Unicode宽字符
CHAR AsciiChar; //解释成ASCII码字符
} uChar;
DWORD dwControlKeyState; //控制键状态
} KEY_EVENT_RECORD;
/*
控制键各状态的值
ENHANCED_KEY 扩展键被按下
LEFT_ALT_PRESSED 左Alt键被按下
LEFT_CTRL_PRESSED 左Ctrl键被按下
RIGHT_ALT_PRESSED 右Alt键被按下
RIGHT_CTRL_PRESSED 右Ctrl键被按下
NUMLOCK_ON 数字锁定被打开
SCROLLLOCK_ON 滚动锁定被打开
CAPSLOCK_ON 大写锁定被打开
SHIFT_PRESSED Shift键被按下
*/
_MOUSE_EVENT_RECORD(鼠标事件结构体)
typedef struct _MOUSE_EVENT_RECORD //鼠标事件结构体 { COORD dwMousePosition; //当前鼠标在控制台窗口缓冲区的位置 DWORD dwButtonState; //鼠标按键的状态 DWORD dwControlKeyState; //控制键状态 DWORD dwEventFlags; //鼠标事件类型 } MOUSE_EVENT_RECORD; /* 其中鼠标按键状态dwButtonState可能的值有 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FROM_LEFT_1ST_BUTTON_PRESSED 最左边的鼠标键被按下 一般来说就是鼠标左键 FROM_LEFT_2ND_BUTTON_PRESSED 左起第二个鼠标键被按下 一般来说是鼠标中键,就是滚轮键 FROM_LEFT_3RD_BUTTON_PRESSED 左起第三个鼠标键被按下 FROM_LEFT_4TH_BUTTON_PRESSED 左起第四个鼠标键被按下 RIGHTMOST_BUTTON_PRESSED 最右边的鼠标键被按下 一般来说是鼠标右键 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 控制键状态dwControlKeyState与键盘事件的一样 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ENHANCED_KEY 扩展键被按下 LEFT_ALT_PRESSED 左Alt键被按下 LEFT_CTRL_PRESSED 左Ctrl键被按下 RIGHT_ALT_PRESSED 右Alt键被按下 RIGHT_CTRL_PRESSED 右Ctrl键被按下 NUMLOCK_ON 数字锁定被打开 SCROLLLOCK_ON 滚动锁定被打开 CAPSLOCK_ON 大写锁定被打开 SHIFT_PRESSED Shift键被按下 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 鼠标事件类型dwEventFlags有以下几种 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DOUBLE_CLICK 双击,第一击只作为普通按键事件,第二击才作为双击事件 MOUSE_HWHEELED 水平鼠标滚轮移动 MOUSE_MOVED 鼠标移动 MOUSE_WHEELED 垂直鼠标滚轮移动 0 当鼠标有键被按下或者释放 */
转载请注明出处:https://www.cnblogs.com/stu-jyj3621

浙公网安备 33010602011771号