codeblock图形界面编程(八)基于ege库的交互设计2

19 篇文章 0 订阅
10 篇文章 2 订阅

codeblock图形界面编程(八)基于ege库的交互设计

上文我们利用EGE库实现了交互中的鼠标接口,本文实现键盘的接口控制,这样我们就可以通过键盘和鼠标,一块控制程序的执行,实现流程控制、图形动态绘制,就可以设计一些功能更为复杂的程序了。

键盘的交互

获取按键信息方法1

前面我们已经使用过了getch()函数 ,利用此函数,可以获取用户所按按键的键值,实现代码如下:

		 int c = getch(); //获取按键的值,放到c中
           xyprintf(0, 100, "key = %5d ",c);//

例如数字按键1到0,对应的键码为其ASCII的值0x31到0x3A,其他按键类似,下图给出了按键的键码定义:

在这里插入图片描述

获取按键信息方法2

利用getkey();函数,该函数获取的信息更多,其定义为:

   key_msg getkey();

函数返回 key_msg 类型的结构体,此结构体定义如下:

	struct key_msg {
	   UINT msg;
	   UINT key;
	   UINT flags;
	};

结构员定义如下:

	msg :键盘消息,有key_msg_down,key_msg_up和key_msg_char三种值,
                 // 消息定义如下:
			typedef enum key_msg_e {
				key_msg_down    = 1,	// 按键按下
				key_msg_up      = 2,	// 按键抬起
				key_msg_char    = 4,	// 字符输入
			} key_msg_e;
                   

	key:  按键码,和getch()的键码一致
	flags: 参数key_flag_shift,key_flag_ctrl,用来指示辅助键Shift和Ctrl是否被按下的。如果对应位上为1,那就辅助键被按下。定义如下:

			typedef enum key_flag_e {
				key_flag_shift  = 0x100,
				key_flag_ctrl   = 0x200,
			}key_flag_e;

实现代码:

	key_msg k = {0};
	char s[50];
 	k = getkey();           // 获取按键信息,若没有按键会一直等待。
   //打印键盘按下和抬起过程中 key_msg结构体重的值
    printf("key = %5d msg=%d flag=%d\n",k.key,k.msg,k.flags);

运行结果:

  例如按下并抬起数字1键时,显示:

在这里插入图片描述分别对应key_msg_down,key_msg_char和key_msg_up。

按下ctrl+a并抬起时,显示如下:

在这里插入图片描述
其他按键消息类似,朋友们可以实际试试。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cyjbj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值