Symbian 自定义桌面图像的响应
2010-03-11 16:11:00 来源:WEB开发网最近研究了一下在待机界面上点击自己的图标和文字去响应对应的APP.
总结一下,为自己走过的路留个脚印吧,也许可以供有需要的人参考.也算是我为Open source一小点贡献吧.
直接进入主题了.
本想找一个类似于时间控件的Plugin,画到桌面上.没有找到解决方案.希望NOKIA能尽快推出解决方法.
这样只能在桌面上画自己的图标或者文字,整个需求的难点在于,如何捕获到图标文字的焦点.
没有找到对应的解决方案,只能用替代方法解决,响应特定的按键来调起APP.
所需要用的技术如下:
1.监控桌面
2.图像文字的绘制
3.按键监控//注在应用程序在后台的情况下监控
4.响应指定的APP
图像文字绘制比较简单,在这里就不谈了.
1.监控桌面
需要用到捕获焦点变化事件EEventFocusGroupChanged. EEventFocusGroupChanged.事件产生的必要条件:
a.焦点事件是打开的
b.有焦点发生变化
代码如下:
void *****AppUi::ConstructL()
{
BaseConstructL();
iEikonEnv->RootWin().EnableFocusChangeEvents();//注这句是必须的(必要条件a)
...................
}
void *****AppUi::HandleWsEventL()
{
const TUid KUidMenu = { 0x101f4cd2 }; // The UID of the Menu applciation//用于模拟器待机桌面
const TUid KUidPhoneApp = { 0x100058b3 }; // for S60 2nd
const TUid KUidIdleApp = { 0x101FD64C }; // for S60 3rd
if ( aEvent.Type() == EEventFocusGroupChanged )
{
RWsSession& ws = iEikonEnv->WsSession();
TInt wgid = ws.GetFocusWindowGroup();
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(ws, wgid);
TUid aCurAppUid = gn->AppUid();
CleanupStack::PopAndDestroy(gn);
if ( aCurAppUid == KUidPhoneApp )
{
//此时为桌面,绘制指定的图像,文字
}
}
}
2.按键监控
主要用到RWindowGroup的CaptureKey方法
更多精彩
赞助商链接