WEB开发网
开发学院手机开发Symbian 开发 Symbian 学习之不同应用程序的视图切换 阅读

Symbian 学习之不同应用程序的视图切换

 2010-03-19 15:49:00 来源:WEB开发网   
核心提示:const TDesC8& aCustomMessage:对于特定的消息,能够让目标视图接受的消息内容,Symbian 学习之不同应用程序的视图切换(2),修改MyMultiView示例程序,在目标视图的头文件ListView.h中,并不完成功能性操作TBuf<32> buf;_LIT(KFormat1,&

const TDesC8& aCustomMessage:对于特定的消息,能够让目标视图接受的消息内容。

修改MyMultiView示例程序。

在目标视图的头文件ListView.h中,定义一个消息UID:

const TUid KCustomMessageUid = {1};

在目标视图的实现文件ListView.cpp中,需修改DoActivateL()函数,代码:

void CListView::DoActivateL(

const TVwsViewId& ,TUid aCustomMessageId,

const TDesC8& aCustomMessage)

{

if (!iContainer)

{

iContainer = new (ELeave) CListViewContainer;

iContainer->SetMopParent(this);

iContainer->ConstructL( ClientRect() );

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

}

if (aCustomMessageId == KCustomMessageUid)

{

//如果是需要捕获的消息,根据消息的内容,更改列表的初始选项

TUint index = aCustomMessage[0];

CAknSingleStyleListBox* listbox = iContainer->iListBox;

listbox->SetCurrentItemIndex(index);

//下面的代码显示一条消息,提示用户当前列表的缺省选项有变化,并不完成功能性操作

TBuf<32> buf;

_LIT(KFormat1,"The index is: %d");

buf.Format(KFormat1,index);

iEikonEnv->InfoMsg(buf);

}

}

修改MySwitchTest示例程序

MySwitchTest示例程序需要定义与目标视图一致的消息UID,在 MySwitchTestAppUi.cpp中定义:

const TUid KCustomMessageUid = {1};

切换视图时,需要构造一个目标视图可以理解的数据包,并以它为参数调用ActiveViewL()函数:

void CMySwitchTestAppUi::HandleCommandL(TInt aCommand)

{

switch ( aCommand )

{

case EAknSoftkeyBack:

case EEikCmdExit:

{

Exit();

break;

}

case EMySwitchTestCmdAppTest:

{

iEikonEnv->InfoMsg(_L("test"));

TVwsViewId listView (KUidMyMultiView, KUidListView);

Tags:Symbian 学习 不同

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