读书笔记

4.1.7 基于“传统symbian os控件体系结构”的多视图管理

AppUi提供多个Container之间的创建,清除,显示或隐藏。因为AppUi负责管理控件栈,处于栈顶的会显示的屏幕上,并处理系统按键事件。

iContainer1 = new(ELeave) Container1;

iContainer1->SetMopParent(this);

iContainer1->ConstuctL(ClientRect());

AddToStackL(iContainer1);

切换到iContainer2同样道理,只是最后AddToStackL(iContainer2);

此为管理应用程序用户界面最灵活的方法。没有使用系统提供的视图管理系统,需要自己负责视图创建,清除,隐藏或显示,此为其缺点,也为其优点。

 

4.1.8 基于“视图体系结构”的多视图管理

“视图体系结构”提供的“视图管理系统”,可用一个view管理多个container,也可以一个view管理一个container.一个view管理多个Container是通过Coecontrol接口里提供的接口实现

void RepotEventL(MCoeControlObserver::TCoeEvent aEvent);

eg:

用户定义如下消息ID

enum MenuCmd

{

ECmdDeleteVideoContainer,

EMenuItemCmdPayment,

EMenuBarCmdPaymentCancel

};

然后再Container需要切换视图的地方使用如下代码

ReportEventL(MCoeControlObserver::TCoeEvent)ECmdDeleteVideoContainer);

然后view进行具体的视图的创建清除显示或隐藏

void HandleControlEvent(CCoeControl* aControl, TCoeEvent aEventType)

{

if(aEventType == ECmdDeleteVideoContainer)

{

.....

}

 

}

 

 

以上内容全为摘抄书籍内容

 

你可能感兴趣的:(读书笔记)