现在的位置: 首页 > 综合 > 正文

Symbian按键处理函数:OfferKeyEventL()详解

2013年08月26日 ⁄ 综合 ⁄ 共 883字 ⁄ 字号 评论关闭

这个函数专门用于处理键盘事件,如果对程序的交互和运行需要通过键盘控制,那么视图类就应该去实现这个方法。如果类实现这个方法,特别需要注意的是,若对 象没有对键盘事件作出响应那么应该返回EKeyWasNotConsumed ,反之,若对象对该键盘事件做出了响应那么就要返回EKeyWasConsumed。当键盘事件发生时,控制框架调用每一个在控件栈中对象的 OfferKeyEventL()函数,直到他们中其中的一个可以处理这个键盘事件并返回EKeyWasConsumed。

参数:
const TKeyEvent& aKeyEvent :键盘事件。TKeyEvent 类描述了键盘事件的细节,他包括四个属性,分别是iCode, iModifiers, iRepeats, iScanCode 。当处理一个TKeyEvent的时候,TStdScanCode型的iScanCode通常被TKeyCode型的iCode取代。

TEventCode aType :键盘事件类型,包括:EEventKey, EEventKeyUp or EEventKeyDown

返回值指明对象是否处理了这个键盘事件。

任意一个键盘的按键事件都将导致三个独立的事件:EEventKeyDown, EEventKey和EEventKeyUp,事实上他们触发的顺序也是这个样子的。为可以获得可以被OfferKeyEventL()函数处理的键盘事 件,应用程序必须调用CCoeAppUi::AddToStackL()方法,把控件压入到栈中。这只是对控件起作用,而不是组成控件的控件组件。复合控 件如果有需要的话也可以把键盘事件传递给他们的组件控件,但是组件控件本身并不可以在控制栈上。

如果一个类覆盖了 CCoeControl::OfferKeyEventL() 方法那么他同时也要覆盖InputCapabilities() 虚函数,返回一个TCoeInputCapabilities 对象,这个对象的属性符合OfferKeyEventL()函数的行为。通常没有必要在内部调用InputCapabilities() 方法,而这个方法也一般被UI控制框架调用。

抱歉!评论已关闭.