zoukankan      html  css  js  c++  java
  • 面板的练习

    面板的练习

    s60 的面板包括:标题面板(CAknTitlePane),情景面板(CAknContextPane),及导航面板(CAknNavigationControlContainer)

    AppUi 及 AknView 提供一个 StatusPane() 的方法可以得到 CEikStatusPane 的指针,然后通过 CEikStatusPane 的 ControlL 可以

    得到标题面板、情景面板、导航面板,如

    CEikStatusPane sp = StatusPane();
    CAknTitlePane* aTitle = static_cast<CAknTitlePane*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle)));
    CAknContextPane* aContext = static_cast<CAknContextPane*>(sp->ConstrolL(TUid::Uid(EEikStatusPaneUidContext)));
    CAknNavigationControlContrainer* iNavi = static_cast<CAknNavigationControlContrainer*>(sp->ControlL(TUid::Uid(EEikStaticPaneUidNavi)));

    标题面板及情景面板是单一的控件,而 CAknNavigationControlContrainer 是复合控件,复合控件可以包括标签组及标签还有图像

    对于单一控件包含文本或图片的代码如下:

    iStatusPane = StatusPane();
    _LIT(Kpic,"\\system\\apps\\MULTIVIEW\\BITMAP.MBM");
    CAknTitlePane* aTitle = static_cast<CAknTitlePane*>
    (iStatusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle)));
    aTitle->SetTextL(_L("hello"));
    // 上面是标题面板一个字符串
    CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(Kpic,EMbmBitmapS1);
    CleanupStack::PushL(bitmap);
    aTitle->SetPicture(bitmap);
    CleanupStack::PopAndDestroy();
    aTitle->SetPicture(Kpic,EMbmBitmapS2);
    aTitle->SetPictureFromFileL(Kpic,EMbmBitmapS2);
    这里有两种方式,一种是通过 CFbsBitmap ,另一种是直接通过 mbm 文件

    _LIT(Kpic,"\\system\\apps\\MULTIVIEW\\BITMAP.MBM");
    CAknContextPane* context = static_cast<CAknContextPane*>
    (iStatusPane->ControlL(TUid::Uid(EEikStatusPaneUidContext)));
    CFbsBitmap* bmp = iEikonEnv->CreateBitmapL(Kpic,EMbmBitmapS3);
    CleanupStack::PushL(bmp);
    context->SetPicture(bmp);
    CleanupStack::Pop();
    context->SetPictureFromFileL(Kpic,EMbmBitmapS3);
    这里有两种方式,一种是通过 CFbsBitmap ,另一种是直接通过 mbm 文件

    对于导航面板,可以通过 CAknNavigationDecorator* 来创建标签组或标签

    TResourceReader aReader;
    iCoeEnv->CreateResourceReaderLC(aReader,R_MY_PANE);
    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
    iNavi = static_cast<CAknNavigationControlContainer*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
    //iNavi->ConstructFromResourceL(aReader);
    CleanupStack::PopAndDestroy();
    iCoeEnv->CreateResourceReaderLC(aReader,R_MY_TAB);
    this->iDecorator = iNavi->CreateTabGroupL(aReader);
    //this->iDecorator = iNavi->CreateNavigationLabelL(_L("label1"));
    CleanupStack::PopAndDestroy();
    iNavi->PushL(*iDecorator);
     

    其中试了试在 ConstructL 函数中创建一个 CFbsBitmap 对像

    CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(Kbmp,EMbmNavitestS1);

    程序运行这到里出错,而代码没有错,可能是 iEikonEnv 这时还不能用

    显示出音量的图标来

    this->iDecorator = iNavi->CreateVolumeIndicatorL(R_AVKON_NAVI_PANE_VOLUME_INDICATOR);
    iNavi->PushL(*iDecorator);
     



    安平2009@原创
    qi_jianzhou@126.com

  • 相关阅读:
    一个简单的瀑布流效果
    C#遇到的一些奇怪问题
    能够按页号提取word文档文本内容的小程序,由C#实现
    设计模式学习之简单工场模式
    设计模式学习之策略模式
    检查机器是否安装了.NET Framework 或已经安装了哪些.net版本
    书籍清单
    使用Func<T>对对象进行排序
    定义一个委托的三种形式
    设计模式学习之设计原则
  • 原文地址:https://www.cnblogs.com/zziss/p/1737397.html
Copyright © 2011-2022 走看看