WEB开发网
开发学院手机开发Symbian 开发 symbian 中view与container 阅读

symbian 中view与container

 2010-05-19 18:31:00 来源:WEB开发网   
核心提示:iContainer = new (ELeave) CiMusicContainerFavt;iContainer->SetMopParent(this);iContainer->ConstructL( AppUi()->ApplicationRect() );iContainer->listT

iContainer = new (ELeave) CiMusicContainerFavt;

iContainer->SetMopParent(this);

iContainer->ConstructL( AppUi()->ApplicationRect() );

iContainer->listType=type;

AppUi()->AddToStackL( *this, iContainer );

注意,它的AppUi()可以得到它的上层的AppUi对象指针。

失活时则正好相反,需要

if ( iContainer )

...{

AppUi()->RemoveFromViewStack( *this, iContainer );

}

delete iContainer;

iContainer = NULL;

6)有多个以工程名+Container命名的类,派生于CCoeControl并实现接口MCoeControlObserver,所以它的行为与常规模式中的Container类似。

这种模式可以有效地组织应用程序,根据应用的多个功能界面切割成数个模块(视图)。由多个AppView来分担AppUi中的事件处理,负责自己这个视图下的具体行为与显示。

各个视图之间的切换也很简单:

STATIC_CAST(CiMusicAppUi*,iCoeEnv->AppUi())->ActivateLocalViewL(KViewMusicId);

[补充]

三 比较两种模式

有些教材还提出过对话框模式,但是我觉得那似乎不太实用,也没注意过它的结构组成。

对比上述两种架构模板,很显然,第二种基于视图的模板应该更有实用性一点,除非程序实在简单。

不过,这里的“视图”很容易让人产生误解。一般我们说MVC的时候,模型-视图-控制器,但是这里的AppView其实对应的控制器,而 Container对应的则是视图。

所以在新的SDK里,第一种模板中由向导生成的工程中源于CCoeControl的类名改成了AppView,对应继承于CAknAppUi控制器的类名叫AppUi。因为我没有看到多视图的工程生成的代码,如果这样的话,估计也应该对应的改一下吧。

上一页  1 2 3 

Tags:symbian view container

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