C语言控制台窗口图形界面编程(七):键盘事件

本文介绍了C语言控制台窗口图形界面编程中的键盘事件,包括扫描码与虚拟键代码的概念,以及如何处理键盘事件。通过示例程序展示了如何响应Esc键的按下和释放,以及根据控制键状态(如大写锁定)改变输出的字母大小写。建议参考MSDN获取更多虚拟键盘码信息,并学习位运算符在控制键状态查询中的应用。
摘要由CSDN通过智能技术生成
       输入事件中的键盘事件通常有字符事件和按键事件,这些事件的附带信息构成了键盘输入的信息,而想要读取这些信息,是要通过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;   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值