您的位置:首页 > 其它

【symbian】如何实现程序的前后台运行切换

2010-09-03 12:01 239 查看
首先,需要使程序有获知焦点变化的能力。具体通过在AppUI类中重载CAknAppUi:: HandleForegroundEventL(TBool aForeground )函数来实现。

其次,在获知焦点变化的同时,改变应用程序的焦点,通过TApaTask::SendToBackground()和TApaTask::BringToForeground()两个函数来实现。由于这里用到的TApaTask类,需要包含APGTASK.H和apgrfx.lib。
再次,因为需要在调用其上函数时,必须用我们的应用程序的窗口组id(window  group  id)初始化(Initialise) TApaTask这个对象,这个实现需要用到,获取当前应用程序窗口组id的函数CEikonEnv::Static()->RootWin().Identifier()。刚好以上函数又要包含w32std.h和w32.lib。
l         具体实现代码如下:
void CHelloUIAppUi::HandleForegroundEventL(TBool  aForeground)
{
       if(aForeground)
       {
              TApaTask task ( CEikonEnv::Static()->WsSession() );
              task.SetWgId( CEikonEnv::Static()->RootWin().Identifier() );
              //Foreground run
              task.BringToForeground();
              ActivateLocalViewL(iHelloUIContainerView->Id());
       }
       else
       {
              TApaTask task ( CEikonEnv::Static()->WsSession() );
              task.SetWgId( CEikonEnv::Static()->RootWin().Identifier() );
              //background run
              task.SendToBackground();
       }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  symbian
相关文章推荐