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                       当鼠标有键被按下或者释放 
*/
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值