这篇文章主要讲述如何控制应用程序的行为,你将学会判断应用程序何时获得和失去焦点(focus)
并知道如何来处理它。
1、获知焦点的变化
当一个应用程序获得或失去焦点时,Series 60 框架(framework)会调用函数
CAknAppUi::HandleForegroundEventL(TBool aForeground)来通知应用程序。如果你的应用程序获得焦点
那么aForeground参数值为ETrue,而如果失去焦点,其值为EFalse.
如果你需要做些特殊的工作,你应该重写(override)这个函数(并且调用基类的这个函数)。在下面
这个例子中,应用程序不想失去焦点。 译者注:原文为Here is an example for an application that
don‘t want to loose the focus
void CMyAppUi::HandleForegroundEventL(TBool aForeground)
{
//调用基类函数
CAknAppUi::HandleForegroundEventL(aForeground);
if(aForeground)
{
// 已经获得焦点
...
}
else
{
//已经失去焦点
...
}
}
2、切换程序的焦点
你也可以要求改变应用程序的焦点,即在前后台之间切换程序。这将用到以下命令
TApaTask::SendToBackground()和TApaTask::BringToForeground().下面这个例子将向你展示如何在
Appui里使用这两个命令。
void CMyAppUi::BringToForeground()
{
// 构造(Construct)一个空的TApaTask对象
// 给它一个指向Window Server session的引用(reference)
TApaTask task(iEikonEnv->WsSession( ));
// 用我们的应用程序的窗口组id(window group id)初始化(Initialise)这个对象
// 这样这个TApaTask对象将代表我们的程序
task.SetWgId(CEikonEnv::Static()->RootWin().Identifier());
// 请求 window server 把我们的程序放到前台(foreground)
task.BringToForeground();
}
下面的代码我没有测试过,但你可能能利用它来控制其它应用程序的焦点:
// 把名字是"theApp"的应用程序放到后台(background)
TApaTaskList tasklist(iCoeEnv->WsSession());
TApaTask task(tasklist.FindApp(_L("theApp")));
task.SendToBackground(); // or BringToForeground()
前后台之间切换程序
最新推荐文章于 2023-08-15 18:14:37 发布
本文介绍如何控制应用程序的焦点状态,包括如何监听焦点变化及如何主动切换应用程序到前台或后台。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
Stable-Diffusion-3.5
图片生成
Stable-Diffusion
Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率
7305

被折叠的 条评论
为什么被折叠?



