首先,需要使程序有獲知焦點(diǎn)變化的能力。具體通過(guò)在AppUI類(lèi)中重載CAknAppUi:: HandleForegroundEventL(TBool aForeground )函數(shù)來(lái)實(shí)現(xiàn)。
其次,在獲知焦點(diǎn)變化的同時(shí),改變應(yīng)用程序的焦點(diǎn),通過(guò)TApaTask::SendToBackground()和TApaTask::BringToForeground()兩個(gè)函數(shù)來(lái)實(shí)現(xiàn)。由于這里用到的TApaTask類(lèi),需要包含APGTASK.H和apgrfx.lib。
再次,因?yàn)樾枰谡{(diào)用其上函數(shù)時(shí),必須用我們的應(yīng)用程序的窗口組id(window group id)初始化(Initialise) TApaTask這個(gè)對(duì)象,這個(gè)實(shí)現(xiàn)需要用到,獲取當(dāng)前應(yīng)用程序窗口組id的函數(shù)CEikonEnv::Static()->RootWin().Identifier()。剛好以上函數(shù)又要包含w32std.h和w32.lib。
l 具體實(shí)現(xiàn)代碼如下:
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)
評(píng)論(2) 編輯 收藏 引用 所屬分類(lèi):
symbian 開(kāi)發(fā)