WEB开发网
开发学院手机开发Symbian 开发 Symbian函数(HandleListBoxEventL\OfferKeyEventL... 阅读

Symbian函数(HandleListBoxEventL\OfferKeyEventL\HandleKeyEventL\HandleControlEventL)

 2010-07-04 15:45:00 来源:WEB开发网   
核心提示:group中拥有焦点的那个应用程序中,这个步骤是使用一个control environment(CONE)来完成的,Symbian函数(HandleListBoxEventL\OfferKeyEventL\HandleKeyEventL\HandleControlEventL)(3),它是window server和u
group中拥有焦点的那个应用程序中,这个步骤是使用一个control environment(CONE)来完成的,它是window server和user interface library之间的一个API函数。

从api函数中可以看出这个处理过程当windows server发送一个按键的事件便调用AppUI中的HandleWsEventL(),HandleWsEventL()方法首先调用CCoeControl::OfferKeyEventL()如果OfferKeyEvent()返回EKeyWasNotConsumed则继续调用AppUI中的HandleKeyEventL()。如果OffKeyEventL()处理了事件则返回EKeyWasConsumed。

如果想直接调用AppUI中的HandleKeyEventL()可以通过set ECoeStackFlagRefusesAllKeys 来省去调用OfferKeyEventL()。

每次按键都会产生3个事件类型1 EEventKeyDown,2 EEventKeyUp,3 EEventKeyDown;可以从OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)中的aType中得到事件类型。aKeyEvent是一个struct可以得到按键的更多属性,eg:iCode指名按了哪个键(键名在e32keys.h中)iRepeats可以判断是重复按键还是长按键。如果想改变系统的按键重复率可以通过RWsSession 的SetKeyboardRepeatRate方法来设置。

S60手机默认情况下是不能接受连续按键的且只有先按下的键可以被接受(也就是按键阻塞,电源键和编辑键默认为非按键阻塞)。可以通过s60提供的CAKnAppUI中的SetKeyBlockMode()方法来取消按键阻塞。

四、void HandleControlEventL (CCoeControl* aControl,TCoeEvent aEventType)

纯虚方法HandleControlEventL()来接收和处理按钮事件。

void CBasic_M1000AppView::HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType)

{ //First check the control the event is coming from

if ( aControl == iSendButton)

{

_LIT(KTEXT,"Click");

switch (aEventType)

{

case EEventPointer:

iLabel->SetTextL(KTEXT);

iLabel->DrawDeferred();

break;

default:

break;

}

}

}

上一页  1 2 3 

Tags:Symbian 函数 HandleListBoxEventL

编辑录入:coldstar [复制链接] [打 印]
赞助商链接