Symbian学习--按键事件

(一)键事件

Symbian中一个键事件由TKeyEvent(键事件结构体)和TEventCode(键事件类型)表示。

TKeyEvent是一个结构体,有4个数据成员:

·        iCode:键的字符码,值在TKeyCode中定义,可以通过此值确定按键代表的字符。

·        iModifiers:修饰符键的状态,值在TEventModifier中定义,例如:CtrlShift

·        iRepeats:自动重复事件的数量,值为0表示事件无重复,可以通过此值实现长按某键产生特殊效果的功能。

·        iScanCode:导致事件的键扫描码,值在TStdScanCode中定义,个人理解这个值表示按键在键盘上的位置,与按键所代表的字符无关,暂时不知道这个值有什么用处。

TEventCode是一个枚举值,它表示键事件的类型:

·        EeventKeyDown:按键按下的时候,窗口服务器发出该消息。

·        EeventKey:一般的按键消息,按键按下之后且抬起之前发出。

·        EeventKeyUp:按键抬起的时候,窗口服务器发出该消息。

(二)OfferKeyEventL()和HandleKeyEventL()的执行顺序

(1)当用户按下某个按键时,Symbain OS的窗口服务器会发送一个窗口服务器事件(TWsEvent),(实际上被转化成TKeyEvent),传给AppUiHandleWsEventL()函数。

(2)AppUiHandleWsEventL()函数接收到这个事件,并通过调用控件的 OfferKeyEventL()函数把它转发给控件堆栈(CotrolStack)中的控件处理。

(3)键事件首先被转发给控件堆栈中优先级最高的控件。

·        如果它的OfferKeyEventL()函数的返回值是 EKeyWasConsumed,说明按键事件已经被处理。

·        如果返回值是EKeyWasNotOnsumed,说明控件没有处理该事件,此时AppUi按优先级的高低将事件转发给控件堆栈的下一个控件。

·        如果所有控件都没有处理该事件,则AppUi会调用自己的HandleKeyEventL()函数处理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值