WEB开发网
开发学院手机开发Symbian 开发 深入探索Symbian多视图程序开发 阅读

深入探索Symbian多视图程序开发

 2010-06-22 03:03:00 来源:WEB开发网   
核心提示:iContainer->SetObserver(this)则把当前的Container注册到MCoeControlObserver,从而实现了View对其内部Container的监听,View中继承自MCoeControlObserver的接口void HandleControlEventL(CCoeContro
iContainer->SetObserver(this)则把当前的Container注册到MCoeControlObserver,从而实现了View对其内部Container的监听。

View中继承自MCoeControlObserver的接口void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType)则负责每个Container所报告的事件的处理。

注意:如果View中并没Container,那么就没必要继承自MCoeControlObserver。

而Container继承自CCoeControl(它是HandleControlEventL的一个参数),CCoeControl中提供下面的方法对View中的HandleControlEventL()报告事件。

view plaincopy to clipboardprint?

case EStdKeyDevice1: //右键

{

ReportEventL((MCoeControlObserver::TCoeEvent)ECmdDeleteVideoContainer);

break;

}

case EStdKeyDevice1: //右键

{

ReportEventL((MCoeControlObserver::TCoeEvent)ECmdDeleteVideoContainer);

break;

}

而View通过以下方法对上面代码所报告的事件进行处理。

view plaincopy to clipboardprint?

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

{

switch(aEventType)

{

case EMenuItemCmdBack:

{

((CAVASAppUi*)(iEikonEnv->AppUi()))->HandleCommandL(EEikCmdExit);

break;

}

case ECmdDeleteVideoContainer:

{

break;

}

default:

break;

}

}

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

{

switch(aEventType)

{

case EMenuItemCmdBack:

{

((CAVASAppUi*)(iEikonEnv->AppUi()))->HandleCommandL(EEikCmdExit);

break;

}

case ECmdDeleteVideoContainer:

{

break;

}

default:

break;

}

}

从上面的分析可以看出:

AppView通过继承自CAknView并通过ActivateLocalViewL()切换视图。

而AppView通过继承自MCoeControlObserver监听众多的Container,并在HandleControlEventL()里对Container所报告的事件进行响应。

上一页  1 2 3 

Tags:深入 探索 Symbian

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