Symbian函数(HandleListBoxEventL\OfferKeyEventL\HandleKeyEventL\HandleControlEventL)
2010-07-04 15:45:00 来源:WEB开发网Symbian函数(HandleListBoxEventLOfferKeyEventLHandleKeyEventLHandleControlEventL)
一.HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aListBoxEvent)
其实就是使用了Observer模式,其中ListBox的父控件是Observer。
假设iListBox的父控件为CMyContainer
1. CMyContainer要实现MEikListBoxObserver接口
2. iListBox构造完成后要调用
iListBox->SetListBoxObserver(this);
3. 当在iListBox中选中某个Item时,iListBox就会通过MEikListBoxObserver接口通知父控件。可以这样 处理这个通知:
void CMyContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/,TListBoxEvent aEventType )
{
if (( aEventType == MEikListBoxObserver::EEventEnterKeyPressed)||
( aEventType== MEikListBoxObserver::EEventItemClicked ))
{
// 如果当前选中的是第二项
if(iListBox->CurrentItemIndex()==2)
{
// 则调用其它函数,或者
// 1. 切换到其它视图(如果你的视图继承自CAknView),或者
AppUi()->ActivateLocalViewL(TUid::Uid(ETheViewID));
// 2. 切换到其它视图(如果你的视图继承自CCoeControl)
// AppUi()->HandleCommandL(ECmdSwithToOtherView)
// 自己要AppUi类的HandleCommandL()中处理ECmdSwithToOtherView命令完成切换
}
}
}
二.virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
这个函数专门用于处理键盘事件,如果对程序的交互和运行需要通过键盘控制,那么视图类就应该去实现这个方法。如果类实现这个方法,特别需要注意的是,若对象没有对键盘事件作出响应那么应该返回EKeyWasNotConsumed ,反之,若对象对该键盘事件做出了响应那么就要返回EKeyWasConsumed。当键盘事件发生时,控制框架调用每一个在控件栈中对象的 OfferKeyEventL()函数,直到他们中其中的一个可以处理这个键盘事件并返回EKeyWasConsumed。
参数:
const TKeyEvent& aKeyEvent :键盘事件。TKeyEvent 类描述了键盘事件的细节,他包括四个属性,分别是iCode, iModifiers, iRepeats, iScanCode
Tags:Symbian 函数 HandleListBoxEventL
编辑录入:coldstar [复制链接] [打 印]更多精彩
赞助商链接