WEB开发网
开发学院手机开发Symbian 开发 Symbian 上往UI框架应用程序发送消息 阅读

Symbian 上往UI框架应用程序发送消息

 2010-03-11 16:12:00 来源:WEB开发网   
核心提示:这种在Symbian C/S架构中,服务器程序与客户UI进程主动通信中用的比较多,Symbian 上往UI框架应用程序发送消息,对于在往UI框架应用程序发送消息,可以通过Symbian OS的Application Architecture Services可以进行应用程序间的通信,TUid uid( TUid::Ui

这种在Symbian C/S架构中,服务器程序与客户UI进程主动通信中用的比较多。

对于在往UI框架应用程序发送消息,可以通过Symbian OS的Application Architecture Services可以进行应用程序间的通信,主要用到的类包括:TApaTaskList和TApaTask。

TApaTaskList:用于访问设备中正在运行的任务(假如有些任务隐藏了的话,那么通过这种方法也无法进行访问)。

TApaTask:表示设备中某个运行的任务,通过与程序关联的窗口组(window group)标识。

具体的解决方案:

发送消息端:使用TApaTaskList找到等待接收消息的任务,TApaTaskList::FindApp()提供了两个重载版 本,可以使用程序的标题,也可以使用程序的UID进行查找。获得需要发消息的任 务后就可以通过TApaTask:: SendMessage()发送消息了,它有两个参数,第一个参数用于标识消息,第二个参数是一个描述符的引用,可以用来提供不同消息时附加的具体信息。

TUid uid( TUid::Uid( 0x0116C9D3 ) );

TApaTaskList taskList( iCoeEnv->WsSession() );

TApaTask task = taskList.FindApp(uid );

if( task.Exists() ) //判断任务是否正在运行

{

LIT8( KTestMsg, "CustomMessage" );

TUid msgUid( TUid::Uid( 1 ) );

task.SendMessage( uid, KTestMsg );

}

接收消息端可以使用如下两种方案:

第一种方案:由于MCoeMessageObserver是处理来自窗口服务器消息的接口类,而CEikAppUi已经继承自MCoeMessageObserver,所以我们只需要在自己的UI类中重现实现MCoeMessageObserver的唯一成员函数HandleMessageL()用来处理接收到的消息即可,代码如下:

MCoeMessageObserver::TMessageResponse CXXXAppUi::HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8& aMessageParameters)

{

_LIT( KFormatStr, "%x" );

TBuf<32> bufUid;

TBuf<32> bufPara;

bufUid.AppendFormat( KFormatStr, aMessageUid.iUid );

bufPara.Copy( aMessageParameters );

iEikonEnv->InfoWinL( bufUid, bufPara );

return MCoeMessageObserver::EMessageHandled;

1 2  下一页

Tags:Symbian UI 框架

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