EVT_APP_MESSAGE消息的处理

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

EVT_APP_MESSAGE消息的处理

编写:陈希(Alan Chen)

电邮:chenxi_cn@126.com

时间:2004年5月26日

平台:BREW 2.0

EVT_APP_MESSAGE一般用于两个方面:

其一是BREW短信到达后,BREW应用管理器将向目标应用程序发送该事件,dwParam是启动参数的地址(可以没有),程序将根据需要完成对该事件的处理。

其二是使用ITAPI_SendSMS()向目标应用程序发送该事件,如果pszDst设置为NULL,同时clsDst为非零值(代表另一个存在应用程序),那么ITAPI_SendSMS()将发送EVT_APP_MESSAGE事件给这个指定的目标应用程序,这个过程是在本地手机完成的,没有通过无线网络。dwParam将包含pszMsg。其返回值和ISHELL_SendEvent()相同。回调函数不会被调用,因为这只是一个本地的消息发送。之后的处理过程和第一方面相同。

EVT_APP_MESSAGE针对自身和其它应用程序的不同处理方式

1. 对自身应用程序的处理

比方,应用程序已经运行,并且处于主界面上,如果这时候一个BREW短信到达,我希望能够显示一个提醒界面,但实际情况确没有。经我分析,发现应用程序在收到EVT_APP_MESSAGE消息后,只是简单的使用ISHELL_StartAppletArgs()启动应用程序,如果该程序已经运行的情况下,界面是不会发生任何变化,流程不会做任何改变。代码如下:

char * lpszMsg = (char *)dwParam;

int ret;

ret = ISHELL_StartAppletArgs(pApp->m_pIShell, AEECLSID_HELLOWORLDAPP, lpszMsg);

return TRUE;

但是我希望界面发生变化。为了解决这个问题,我需要对ISHELL_StartAppletArgs()函数的返回值进行判断。如下:

char * lpszMsg = (char *)dwParam;

int ret;

ret = ISHELL_StartAppletArgs(pApp->m_pIShell, AEECLSID_HELLOWORLDAPP, lpszMsg);

if (ret == EFAILED)

{

//显示一个提醒界面

}

return TRUE;

如果应用程序没有启动,那么ISHELL_StartAppletArgs()函数的返回值是SUCCESS,经过判断不会显示提醒界面;如果应用程序已经启动了,那么其返回值将是EFAILED,则会显示提醒界面。

2. 对其它应用程序的处理

同样道理,如果应用程序A再收到EVT_APP_MESSAGE消息后,启动的是应用程序B,那么条件是判断是否已经启动了,否则的话,则启动应用程序B,应用程序A进入suspend状态。代码如下:

char * lpszMsg = (char *)dwParam;

int ret;

ret = ISHELL_StartAppletArgs(pApp->m_pIShell, AEECLSID_HELLOWORLDAPP2, lpszMsg);

if (ret == EALREADY)

{

//显示一个提醒界面,应用程序已经启动了

}

return TRUE;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航