2009-03-17 19:39:16)
标签:symbian总结it 分类:Symbian学习总结
这几天研究动态桌面的问题。其实在做这一块时已经打下了很多基础。
比如我实现了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上测试通过。