Symbian 页面使用系统皮肤

1.在.h中声明
#include <aknscontrolcontext.h>

2.在.h中声明变量
//支持皮肤
MAknsControlContext* iBackGround;


3.在.h中声明函数
    //获取系统当前的皮肤
    TTypeUid::Ptr MopSupplyObject(TTypeUid aId);


4.在.cpp中引入
#include <aknsdrawutils.h>
#include <aknsutils.h>
#include <aknsskininstance.h>
#include <AknsBasicBackgroundControlContext.h> //skin


5.在.mmp中添加
aknskins.lib aknskinsrv.lib aknswallpaperutils.lib


6.在.cpp的ConstructL()的SetRect(aRect);后面添加
iBackGround = CAknsBasicBackgroundControlContext::NewL(KAknsIIDQsnBgAreaMain, Rect(), EFalse);


7.在.cpp的析构函数中
delete iBackGround;


8.在.cpp的Draw中
    CWindowGc& gc = SystemGc();
    gc.Clear();
    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
    MAknsControlContext* cc = AknsDrawUtils::ControlContext(this);
    AknsDrawUtils::Background(skin, cc, this, gc, aRect);


9.在.cpp中添加函数定义
TTypeUid::Ptr CWorldContainer::MopSupplyObject(TTypeUid aId)
    {
    if (aId.iUid == MAknsControlContext::ETypeId && iBackGround)
        {
        return MAknsControlContext::SupplyMopObject(aId, iBackGround);
        }
    return CCoeControl::MopSupplyObject(aId);
    }

你可能感兴趣的:(Symbian 页面使用系统皮肤)