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

symbian 中view与container

 2010-05-19 18:31:00 来源:WEB开发网   
核心提示:另两个函数ComponentControl和CountComponentControls分别获取控件与获取控件个数,在依赖于控件展示的 GUI应用中则更为重要,symbian 中view与container(2),因为它实现了接口MCoeControlObserver,所以函数HandleControlEventL也需

另两个函数ComponentControl和CountComponentControls分别获取控件与获取控件个数,在依赖于控件展示的 GUI应用中则更为重要。

因为它实现了接口MCoeControlObserver,所以函数HandleControlEventL也需要实现一下。

利用它的成员iCoeEnv可以取到AppUi类的指针,不过需要强制转型一下,如:STATIC_CAST(CiMusicAppUi*,iCoeEnv->AppUi())->...

二. 基于CAknView的MVC模式

这种模式的特点是在AppUi类与Container类之间增加一个AppView的类,即一个AppUi对象,N个AppView和N个 Container。

除了公共的三个文件以外,它包括的文件有:

4) 有一个以工程名+AppUi命名的类,派生于CAknViewAppUi类,其实也是间接派生于CAknAppUi类,它的工作职责与常规模式中的 AppUi类也基本相同。

唯一的区别在于它不是直接创建Container类,而是创建AppView类,并且是创建多个AppView类。同时它还需要负责将创建的 view加入视图栈里AddViewL。

CiMusicViewMusic* view1 = new (ELeave) CiMusicViewMusic;

CleanupStack::PushL( view1 );

view1->ConstructL();

AddViewL( view1 ); // transfer ownership to CAknViewAppUi

CleanupStack::Pop(); // view1

CiMusicViewFavt* view2 = new (ELeave) CiMusicViewFavt;

CleanupStack::PushL( view2 );

view2->ConstructL();

AddViewL( view2 ); // transfer ownership to CAknViewAppUi

CleanupStack::Pop(); // view2

CiMusicViewWeb* view3 = new (ELeave) CiMusicViewWeb;

CleanupStack::PushL( view3 );

view3->ConstructL();

AddViewL( view3 ); // transfer ownership to CAknViewAppUi

CleanupStack::Pop(); // view3

this->ActivateLocalViewL(KViewMusicId);

5)有多个以工程名+View命名的类,派生于CAknView类。它负责分担AppUi部分事件的处理,所以,它也有 HandleCommandL函数。

此外,它的DoActivateL和DoDeactivate两个函数在当前视图激活或失活时被调用,需要重载一下。

在激活时,需要创建视图对应的Container类,并且调用Container的SetMopParent为自己,还要在上层的AppUi中将这个Container加入栈中。一般代码如下:

Tags:symbian view container

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