首先,需要使程序有获知焦点变化的能力。具体通过在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();
}
}
posted on 2008-05-09 22:45
frank.sunny 阅读(3801)
评论(2) 编辑 收藏 引用 所属分类:
symbian 开发