在S60v5中为啥ListBox的HandleListBoxEventL发生后系统会自动触发OfferKeyEventL
发布时间:2010-05-30 00:17:07 文章来源:www.iduyao.cn 采编人员:星星草
在S60v5中为什么ListBox的HandleListBoxEventL发生后系统会自动触发OfferKeyEventL
我使用的是View-Container-ListBox(CAknSingleGraphicStyleListBox)+CEikGlobalTextEditor的结构。
ListBox是一个复选框。
我在构造ListBox的时候调用了SetListBoxObserver,当用户选中或反选ListBox中的一项时会触发HandleListBoxEventL(EEventItemClicked),之后还会触发OfferKeyEventL(aKeyEvent.iCode==EKeyDevice3),所以导致我的后续处理和用户点完ListBox之后又点了左软键是一样的效果。
实际上这个被系统自动触发的按键事件不是我期望的,请问我怎么能避免这个奇怪的按键事件发生?
------解决方案--------------------
自己从CAknSingleGraphicStyleListBox类派生一个类,重载其TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)方法,大致如下:
TKeyResponse Class***::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
{
...
...
if(aKeyEvent.iScanCode == EStdKeyDevice3)
{
iListBoxObserver->HandleListBoxEventL(this,MEikListBoxObserver::EEventEnterKeyPressed);
return EKeyWasConsumed;
}
...
...
return CAknSingleGraphicStyleListBox:: OfferKeyEventL(aKeyEvent,aType);
}
------解决方案--------------------
CAknSingleGraphicStyleListBox作为一个容器的子控件,所有的事件应该都是由父窗口派发的,你完全可以在父容器中的key/mouse处理方法中对事件进行过滤,然后传递给需要处理key/mouse事件的子控件,最后根据子控件相应方法的返回值再决定父容器是否做后续处理~
“在CAknSingleGraphicStyleListBox的子类中这样实现是不符合我的要求的,我的代码是要同时支持键盘和触摸屏的。”你本身用的就是CAknSingleGraphicStyleListBox类型,从这里派生一个新类使用,就不能满足你要求了?派生类只是增加更多功能,更满足你才对~
------解决方案--------------------
我也碰到类似的问题了,
我的View继承自CAknView,contaner继承自CCoeControl,container中有一个CAknSingleStyleListBox控件,左键为Option菜单,右键为退出键,单击触屏选中list中的一项时,在点击选中的项时左键的Option菜单自动弹了出来,这不是我想要的,程序在simulator上没有问题,真机上就有问题,实在是不知道如何触发菜单点击事件的。
------解决方案--------------------
我也遇到了同样的问题。。。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
高手,求个S60v3 FP2 320*240分辨率的SDK
求个S60v3 FP2 320*240分辨率的SDK,
240*320的SDK虽然可以调分辨率的,但我想要一个和E72一...
-
请教关于smybian上使用sqlite的问题
请问如何在symbian 9.1版本上使用sqlite啊?
------解决方案--------------------
直接去sql...
-
symbian 可以内嵌浏览器吗
谁有内嵌浏览器的简单代码吗?或者如何实现内嵌浏览器。谢谢
------解决方案--------------------
ht...
-
symbian:如何判断一个文件是否系统支持的手机铃声格式
现在需要扫描一些固定后缀的文件如MP3,aac等显示出来供用户选择设置为手机铃...
-
数据库求助!!
我创建了一个RDbStoreDatabase,想把通讯录的数据库内容复制过来,该如何实现?实在是不想一条条的insert。。。
------解...
-
Specified file '\Symbian\9.1\S60_3rd_MR\EPOC32\RELEASE\WINSCW\UDEB\.lib' not found 什么意思?
请大家帮我解决一下,...
-
关于Symbian的express signed
我想给一个Symbian程序做一个express signed,在得到了publisheID后,还需要一个Content ID才能完成,可...
-
CPbkContactEngine::NewL()真机崩溃
如题,在模拟器上正常,在真机上崩溃
哪位遇到过?
------解决方案--------------------
我也遇...
-
请问在symbian如何获取最近手机基站的lac和cid?
请问在symbian如何获取最近手机基站的lac和cid?
------解决方案---------------...
-
求救rvct2.2问题:Cannot obtain license for Compiler (feature compiler) with license version >= 2.2
在carbide用rvct2.2编译...