【wxWidgets】处理用户输入

文章详细介绍了如何使用wxWidgets库处理各种用户输入,包括鼠标事件如按钮点击、移动和滚轮滚动,键盘事件如按键按下、释放和字符事件,以及如何设置和响应游戏手柄事件。处理这些事件时,可以获取按键和鼠标的状态信息,以及利用wxWidgets提供的函数检测和响应不同的用户交互。
摘要由CSDN通过智能技术生成

wxWidgets处理用户输入

鼠标输入

基本的鼠标事件使用wxMouseEvent作为参数
在处理按钮事件时是对产生的wxCommandEvent类型进行处理,不需要自己处理底层的鼠标事件

基本的鼠标事件可以拦截鼠标左键、中键或者右键的鼠标按下,鼠标释放或者鼠标双击事件,鼠标的移动事件,鼠标正在移入或者移出某个窗口,以及鼠标的滚轮事件。
收到一个鼠标事件时,可以获得鼠标按钮的状态信息,以及shift、alt等状态键的信息,可以获得鼠标指针在窗口客户区的坐标值。
在这里插入图片描述

处理按钮和鼠标指针移动事件

按钮和指针移动事件是最主要的鼠标事件
要检测状态键状态,可以使用AltDown,MetaDown,ControlDown或者Shift-Down等函数,使用cmdDown函数来检测Mac OS平台上的Control键状态
检测鼠标按钮按下可以使用LeftIsDown,MiddleIsDown和RightIsDown函数,这些函数只反应事件产生时刻鼠标的状态,而不是鼠标的状态改变
用下面的函数表示鼠标事件类型:Dragging(某个键正按下时鼠标移动)、Moving(鼠标正在移动而没有鼠标键被按下)、Entering、Leaving、ButtonDown、ButtonUp、ButtonDClick、LeftClick、LeftDClick、LeftUp
可以使用GetPosition函数或者GetX和GetY函数获取鼠标指针当前的设备单位位置,也可以给GetLogicalPosition函数传递某个设备上下文参数以便得到对应的逻辑位置

处理鼠标滚轮事件

当处理鼠标滚轮事件时,可以使用GetWheelRotation函数获得滚轮滚过的位置大小,除以GetWheelDelta以便得到实际滚动行数

处理键盘事件

键盘事件是由wxKeyEvent类表示,总共有三种不同类型的键盘事件,分别为:键按下、键释放和字符事件,当长按时一个键释放事件可能对应着多个键按下事件
要接受键盘事件,窗口需要拥有键盘焦点,可以通过wxWindow::SetFocus设置
要获得按键编码,可以使用GetKeyCode函数
在这里插入图片描述
键盘事件提供的是未翻译的按键编码,而字符事件提供的是翻译以后的字符编码,对于未翻译的按键编码来说,字母永远是大写字符,而其他字符则是在WXK_XXX中定义的字符,而对于已经翻译的按键编码来说,字符的值和同样的按键在一个文本编辑框中产生的字符相同
例如:按下A键后,在KEY_DOWN事件中的字符编码是大写字母A的ASCII码65,而在相应的字符事件中的字符编码是小写的ASCII码a,编码为97,换句话说,当shift和A键同时被按下,上述两个事件中的编码是一样的
加速键是为了实现通过某种组合键来快速执行菜单命令,最简单的定义加速键的方法是在菜单项定义函数中加上加速键
在这里插入图片描述
将\t后的内容翻译为加速键增加到菜单的加速键表中
另外一种设置加速键的方法是使用wxAcceleratorEntry对象定义一个加速键表,然后使用wxWindow::SetAcceleratorTable函数将其和某个窗口绑定。每一个wxAcceleratorEntry记录是由一个修饰键比特位值和一个字符或者功能键以及一个窗口标识符组成的

处理游戏手柄事件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值