输入事件中的键盘事件通常有字符事件和按键事件,这些事件的附带信息构成了键盘输入的信息,而想要读取这些信息,是要通过API函数
ReadConsoleInput来获取的,函数原型如下:
BOOL ReadConsoleInput( //读取输入信息
HANDLE hConsoleInput, //句柄
PINPUT_RECORD lpBuffer, //输入事件结构体的指针
DWORD nLength, //要读取的记录数
LPDWORD lpNumberOfEventsRead //用来接受成功读取记录数的指针
); //如果该函数成功调用,返回非零值
//输入事件结构体的指针可以是结构体数组的首地址,这样就可以一次性读取多个记录数。
下面介绍几个和读取键盘输入事件有关的结构体,各结构体原型如下:
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结构体
*/
typedef struct _KEY_EVENT_RECORD //键盘事件结构体
{
BOOL bKeyDown; //按键状态,true代表键按下,false代表键释放
WORD wRepeatCount;