WEB开发网
开发学院手机开发Symbian 开发 Symbian 学习之基于视图的应用 关键函数的实现 阅读

Symbian 学习之基于视图的应用 关键函数的实现

 2010-03-18 15:51:00 来源:WEB开发网   
核心提示:1.构造与销毁视图的构造是通过ConstructL()函数实现的,该函数以视图的资源ID作为参数调用基类的BaseConstructL()函数,Symbian 学习之基于视图的应用 关键函数的实现,通过资源文件创建视图,视图的销毁在视图类的析构函数中实现,当程序切换到其他视图时,应用程序框架会调用视图类的DoDeact

1.构造与销毁

视图的构造是通过ConstructL()函数实现的,该函数以视图的资源ID作为参数调用基类的BaseConstructL()函数,通过资源文件创建视图。

视图的销毁在视图类的析构函数中实现。首先判断容器对象有没有被销毁,如果没有则需要从控件堆栈中弹出,然后销毁容器对象。代码如下:

CListView::~CListView()

{

if(iContainer!=NULL)

{

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

}

delete iContainer;

}

2.返回视图标识函数

应用程序的视图类需要重载CAknView::Id()函数,返回该视图的标识,实现代码如下:

TUid CListView::Id()const

{

return KViewId;

}

KViewId在CListView的头文件中定义,它是该视图的唯一标识,代码如下:

const TUid KViewId={1};

3.视图的激活与反激活

DoActivateL()函数和DoDeactivate()函数分别负责处理视图的激活和反激活事件。

视图创建后在显示视图之前应用程序框架调用它的DoActiveL()函数,该函数的主要功能是创建视图的容器对象,并把它压入控件堆栈中以响应按键事件,代码如下:

void CListView::DoActivateL(const TVwsViewId& ,TUid ,

const TDesC8& aCustomMessage*/)

{

if(!iContainer)

{

iContainer= new(Eleave)CListViewContainer;

iContainer->SetMopParent(this);

iContainer->ConstructL(ClientRect());

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

}

}

注意:开发人员要保证DoActivateL()函数尽快执行完毕,尤其注意不要在这个函数中加入等待用户响应的代码,否则可能会产生 “ViewSrv11”严重错误。

当程序切换到其他视图时,应用程序框架会调用视图类的DoDeactivate()函数,该函数的主要功能是将容器对象从控件堆栈弹出并销毁。

void CListView::DoDeactivate()

{

if(iContainer!=NULL)

{

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

}

1 2 3  下一页

Tags:

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