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

这几天研究动态桌面的问题。其实在做这一块时已经打下了很多基础。
比如我实现了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上测试通过。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值