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)
{
.....
}
}
以上内容全为摘抄书籍内容