اين مقاله به شما نشان ميدهد كه چگونه ميتوانيد بفهميد كه برنامه شما چه وقت فوكوس را از دست ميدهد و چه وقت به دست ميآورد.
مطلع شدن از تغيير فوكوس
فريمورك سري 60 هنگامي كه يك برنامه فوكوس را از دست ميدهد يا به دست ميآورد را با اجراي تابع CAknAppUi::HandleForegroundEventL(TBool aForeground) اطلاع ميدهد. اگر برنامه فوكوس را به دست آورده است، پارامتر aForeground داراي مقدار ETrue است و هنگام از دست دادن فوكوس داراي پارامتر EFalse است.
اگر شما ميخواهيد كه در اين مواقع كار خاصي انجام دهيد، بايد از اين تابع استفاده كنيد (و بايد تابع كلاس پايه را اجرا كنيد.) در زير مثالي را ميبينيد:
- كد:
-
void CMyAppUi::HandleForegroundEventL(TBool aForeground)
{
// Call Base class method
CAknAppUi::HandleForegroundEventL(aForeground);
if(aForeground)
{
// We have gained the focus
...
}
Else
{
// We have lost the focus
...
}
}
تغيير دادن فوكوس
شما همچنين ميتوانيد فوكوس برنامهتان را تغيير دهيد. دستورات تغيير عبارتند از: TApaTask::SendToBackground() و TApaTask::BringToForeground().
در زير نحوه استفاده كردن از آنها را ميبينيد:
- كد:
-
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()
فراموش نكنيد كه كتابخانه apgrfx.lib را هم متصل كنيد.