在S60v5中为什么ListBox的HandleListBoxEventL发生后系统会自动触发OfferKeyEventL

snowfog 2009-06-01 10:36:40
我使用的是View-Container-ListBox(CAknSingleGraphicStyleListBox)+CEikGlobalTextEditor的结构。
ListBox是一个复选框。
我在构造ListBox的时候调用了SetListBoxObserver,当用户选中或反选ListBox中的一项时会触发HandleListBoxEventL(EEventItemClicked),之后还会触发OfferKeyEventL(aKeyEvent.iCode==EKeyDevice3),所以导致我的后续处理和用户点完ListBox之后又点了左软键是一样的效果。
实际上这个被系统自动触发的按键事件不是我期望的,请问我怎么能避免这个奇怪的按键事件发生?
...全文
356 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouyao613542 2011-11-10
  • 打赏
  • 举报
回复
我也遇到了同样的问题。。。
xianzhengwang 2010-06-27
  • 打赏
  • 举报
回复
我也碰到类似的问题了,
我的View继承自CAknView,contaner继承自CCoeControl,container中有一个CAknSingleStyleListBox控件,左键为Option菜单,右键为退出键,单击触屏选中list中的一项时,在点击选中的项时左键的Option菜单自动弹了出来,这不是我想要的,程序在simulator上没有问题,真机上就有问题,实在是不知道如何触发菜单点击事件的。
alex_hua 2009-06-01
  • 打赏
  • 举报
回复
自己从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);
}
alex_hua 2009-06-01
  • 打赏
  • 举报
回复
CAknSingleGraphicStyleListBox作为一个容器的子控件,所有的事件应该都是由父窗口派发的,你完全可以在父容器中的key/mouse处理方法中对事件进行过滤,然后传递给需要处理key/mouse事件的子控件,最后根据子控件相应方法的返回值再决定父容器是否做后续处理~

“在CAknSingleGraphicStyleListBox的子类中这样实现是不符合我的要求的,我的代码是要同时支持键盘和触摸屏的。”你本身用的就是CAknSingleGraphicStyleListBox类型,从这里派生一个新类使用,就不能满足你要求了?派生类只是增加更多功能,更满足你才对~
snowfog 2009-06-01
  • 打赏
  • 举报
回复
alex_hua:
在CAknSingleGraphicStyleListBox的子类中这样实现是不符合我的要求的,我的代码是要同时支持键盘和触摸屏的。

另外我再澄清一下,HandleListBoxEventL(EEventItemClicked)和OfferKeyEventL(aKeyEvent.iCode==EKeyDevice3)都是系统发给Container的。我在想这种事件序列是不是可以调用某个API可以改变为只发生HandleListBoxEventL。

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧