首先,需要使程序有獲知焦點變化的能力。具體通過在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 閱讀(3811)
評論(2) 編輯 收藏 引用 所屬分類:
symbian 開發