Symbian截屏以及前后台切换(Screen capture)

来源:互联网 发布:http post数据 编辑:程序博客网 时间:2024/04/25 18:48

这几天研究动态桌面的问题。其实在做这一块时已经打下了很多基础。
比如我实现了GIF的解码。比如我能监听到何时切换到待机界面。
有了上述的准备工作,目前做动态桌面还是比较轻松。
其实动态桌面的实现方式有二种:
1.判断当前为待机界面。创建顶层窗口,然后在顶层窗口上绘制需要的图像
2.随机启动将应用程序压到后台,当检查到为待机桌面时。将应用程序带到前台。

目前用第二种方式实现的。
将应用程序带到前台时,需要处理待机界面的TITLE栏。用截屏的方式,先绘制
待机界面,然后再到指定的区域绘制指定的动漫。

如何实现截屏,以及如何将程序前后台切换将是重点。让我们来看看吧。

//截屏
void C***::ScreenCapture()
{
 

   TSize screenSize = CEikonEnv::Static()->ScreenDevice()->SizeInPixels();
    TDisplayMode displayMode = CEikonEnv::Static()->ScreenDevice()->DisplayMode();
    //创建截屏后,保存图像的位图
    iBitmap = new (ELeave) CFbsBitmap();
    User::LeaveIfError(iBitmap->Create(screenSize, displayMode));
    //截屏
    TInt err = CEikonEnv::Static()->ScreenDevice()->CopyScreenToBitmap(iBitmap);
}
//前后台切换

后台向前台切换
void C***::Back2Front()
{
    iSBack = false;//back
    TApaTask task(iEikonEnv->WsSession());
    task.SetWgId(CEikonEnv::Static()->RootWin().Identifier());
    task.BringToForeground();
}
//前后向后台切换
void CCTopWindow::Front2Back()
{
    iSBack = true;//back
    TApaTask task(iEikonEnv->WsSession());
    task.SetWgId(CEikonEnv::Static()->RootWin().Identifier());
    task.SendToBackground();
}

以上代码己在N73和6120C上测试通过。
原创粉丝点击