系统控件配合OfferKeyEventL()函数的应用

做了两个小的项目,添加页面用到了好几个系统 控件,当光标在一个控件上的时候,按方向键“下”, 让下一个控件获取光标。
以前的做法是在OfferKeyEventL()函数中判断扫描码的方式,例如:

//按键落下的情况
if (EEventKeyDown == aType)
{
         //按下了方向键“下”
         if(17 == aKeyEvent.iScanCode)
         {
         //本控件失去光标
         //下一个控件获取光标
         }
}

这种方式可以满足光标上下移动的效果。
但OfferKeyEventL(con st TKeyEvent& aKeyEvent,TEventCode aType)中的第二个参数aType作用是判断当前的按键状态 ,也就是鼠标按下、按中、抬起的三种状态,而上面的 代码我是判断了其中的一种情况,鼠标按下的情况。
像在系统CEikDateEditor、CEikNumberEditor上都没有什么大的问题。

但是在CEikEdwin中,问题就出现了!
CEikEdwin是文本编辑框,当打开的是拼音、笔形输入法的时候,会出现一个输入法文字提示框,用户可以按下方向键“上”、“下”、“左”、“右”进 行文字的选择。但用上面的代码模式,当弹出输入法文字提示框的时候,按下“上”、“下”就会移动到上一个控件或者是下一个控件。这不是预期的结果。

解决的办法:
在OfferKeyEventL(con st TKeyEvent& aKeyEvent,TEventCode aType)函数中尽量不用iScanCode扫描码,用iCode。

//当按下方向键“下”
if(EKeyDownArrow == aKeyEvent.iCode)
{
         //本控件失去光标
         //下一个控件获取光标
}

这样问题就解决了。呵呵。
希望大家提出建议……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值