在Symbian中使用皮肤是一个让我这样新手颇觉得费劲的事情。折腾了一天, 把几种情况都试验了一把,总结一下吧。
1.一句话的方法
最基本的一招就是在AppUi中的ConstructL()中加一句话搞定。如下:
void CTestMIMAppUi::ConstructL() { BaseConstructL (CAknAppUi::EAknEnableSkin);//add your code here...}
用上面这句话基本上能让大部分控件的透明化,显示出系统的皮肤。
但是,有时我们会发现部分控件(比如那个CEikEdwin)仍显示的一个难看的 白底,此时,我们需要做一些额外的工作了。
修改Container的头文件,增加一个成员变量:
CAknsBasicBackgroundControlContext* iBgContext;
然后在对应的ConstructL函数中初始它:
iBgContext = CAknsBasicBackgroundControlContext::NewL (KAknsIIDQsnBgAreaMainIdle,aRect,ETrue);
这儿的KAknsIIDQsBgAreaMainIdle你可以选择其它的,不碍事的。
然后, 因为CEidEdwin有一个很方便的成员方法SetSkinBackgroundControlContextL, 所以接下来的代码就简单了:
iEdWin=new(ELeave)CEikEdwin; CleanupStack::PushL(iEdWin); iEdWin->SetContainerWindowL(*this); iEdWin->ConstructL (); iEdWin->SetSkinBackgroundControlContextL(iBgContext); iEdWin->SetExtentToWholeScreen(); iEdWin->SetFocus (ETrue); iEdWin->ActivateL(); CleanupStack::Pop (iEdWin);
这样就可以了。别忘了,在析构时delete它。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索控件
一个
,以便于您获取更多的相关知识。
时间: 2025-01-17 20:51:45