WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章手机编程Symbian程序开发处理应用程序Focus event

处理应用程序Focus event
作者:cofd  来源:www.sf.org.cn  发布时间:2005-12-20 2:20:39

一、获得、失去焦点

      应用程序获得、失去焦点时,Series60框架通过调用CAknAppUi::HandleForegroundEventL(TBool aForeground) 通知应用程序。获得焦点时参数aForeground值为ETrue ,否则为EFalse。

      通常下列事件将导致当前应用程序失去焦点:

  1. 另一个应用程序启动
  2. 弹出系统消息对话框。如通知“电量不足,请充电”的dialog
  3. 用户切换到桌面
  4. 收到新的信息或来电

      如果应用程序需要对获得、失去焦点做出特别的响应,必须重载上面的函数。如下面的例子:

// Handle any change of focus
void CFocusEventAppUi::HandleForegroundEventL(TBool aForeground)
    {
    if(!aForeground)
        {
          // 失去了焦点

        }
    else
        {
          // 获得了焦点 

        }
    // 调用默认基类方法
    CAknAppUi::HandleForegroundEventL(aForeground);
    }

二、改变焦点

      应用程序还可以主动请求改变其焦点(一般用于视图架构)。方法是:TApaTask::SendToBackground()TApaTask::BringToForeground().

      下面的代码将演示如何使用它们:(代码来自http://www.newlc.com/article.php3?id_article=141)

void CMyAppUi::BringToForeground()
{
 // Construct en empty TApaTask object
 // giving it a reference to the Window Server session
 TApaTask task(iEikonEnv->WsSession( ));
               
 // Initialise the object with the window group id of
 // our application (so that it represent our app)
 task.SetWgId(CEikonEnv::Static()->RootWin().Identifier());

 // Request window server to bring our application
 // to foreground
 task.BringToForeground();
}

下面的代码经我的测试是可行的

// Bring the application "theApp" to background
 TApaTaskList tasklist(iCoeEnv->WsSession());
 TApaTask     task(tasklist.FindApp(_L("theApp")));
 task.SendToBackground();  // or BringToForeground()

三、Summary

      演示了AppUi的HandleForgroundEventL ()方法和应用程序主动请求改变Foucs的方法

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码