zoukankan      html  css  js  c++  java
  • Label及edit学习

     

    1. Label

    label 是一个标签,用于显示在屏幕上。使用方法如下:

    1. 新建一个传统工程
    2. 在container 的 .h 文件中先定义一个 CEikLable 的类
      Class CEikLable ; 属于 forward 定义
    3. 添加 一个类成员变量 CEikLable* iLabelTest ;
    4. 在container 的 .cpp 文件中添加 include 的引用 #include <eiklabel.h> 
    5. 在 constructL方法中创建该变量,如以下代码所示
      iLabelTest = new (ELeave)CEikLabel;
      iLabelTest->SetContainerWindowL(*this);
      /* 给label 设置字体,可以通过引用eikenv.h ,从而可以通过
      * CEikonEnv::Static() 得到CEikonEnv 对像指针,然后调用
      * 其成员方法,得到一个const 的CFont 指针
      *
      * 其它方法:引用 aknutils.h ,可以得到系统定义的字体
      * 在帮助中搜aknutils 可以查到全局的字体
      * */
      const CFont *aFont = CEikonEnv::Static()->AnnotationFont();
      iLabelTest->SetFont(aFont);
      iLabelTest->SetTextL(_L("label test"));
      iLabelTest->SetUnderlining(ETrue);
      iLabelTest->SetAlignment(EHRightVTop);
       

      这里用到了字体,需要添加用到的头文件:
       
      #include <eikenv.h>
      #include <gdi.h>
      #include <aknutils.h>
      #include <gulalign.h>

      及相应的库文件
      gdi.lib


    1. SizeChanged 方法中要对 CEikLable 做 SetExtent
      iLabelTest->SetExtent(TPoint(50,50),iLabelTest->MinimumSize());
      试着把这个去掉,则不能显示这个标签,这里的作用是用来设置显示的位置及大小
    2. CountComponentControls()  及 ComponentControl(TInt aIndex)
      是分别用来返回该 container 中总的组件数及返回具体某个组件的
      如以下代码:
      // ---------------------------------------------------------
      // CsimplecontrolContainer::CountComponentControls() const
      // ---------------------------------------------------------
      //
      TInt CsimplecontrolContainer::CountComponentControls() const
      {
      return 5; // return nbr of controls inside this container
      }
      // ---------------------------------------------------------
      // CsimplecontrolContainer::ComponentControl(TInt aIndex) const
      // ---------------------------------------------------------
      //
      CCoeControl* CsimplecontrolContainer::ComponentControl(TInt aIndex) const
      {
      switch ( aIndex )
      {
      case 0:
      return iLabel;
      case 1:
      return iToDoLabel;
      case 2:
      return iLabelTest;
      case 3:
      return iDateEditor;
      case 4:  // 这里在调试时写成了 5 ,结果一直出错,原因找了好长时间才找到
      return iEdwin;
      default:
      return NULL;
      }
      }
      // ---------------------------------------------------------
       


    3. 编译运行就可以看到效果了

    2. 编辑输入控件

       在练习编辑输入控件是时用的是 CEikDateEditor
       这个需要的头文件是:#include <eikmfne.h> 
       LIB 库文件是:eikctl.lib
       RSS文件定义:
      

    RESOURCE DATE_EDITOR r_my_date_edit
    {
    minDate = DATE
    {
    year = 1900;
    };
    maxDate = DATE
    {
    year = 2100;
    };
    }


       创建一个 CEikDateEditor 和一个 lable 的区别在 lable 没有放到 rss 中,而 CEikDateEdit 放到 Rss 中了,
    下面是创建 CEikDateEditor 的代码

    TResourceReader read ;
    iCoeEnv->CreateResourceReaderLC(read,R_MY_DATE_EDIT);
    iDateEditor = new (ELeave)CEikDateEditor;
    iDateEditor->SetContainerWindowL(*this);
    iDateEditor->ConstructFromResourceL(read);
    CleanupStack::PopAndDestroy();


    代码中用到了 TResourceReader ,这个类需要引用头文件:barsread.h  及库文件:bafl.lib

    对于 普通的输入控件 CEikEdwin 和 CEikDateEditor 除了 rss 定义不同外,其它的定义及创建是一样的

  • 相关阅读:
    Hbase 命令小结
    shell while内获取外部变量内容
    Idea的live template参数中的预定义功能
    Adobe Illustrator里使用fontawesome矢量图标
    五笔结构与识别码
    致第一次安装RIME的你
    sublime Text Pastry使用
    PHOTOSHOP CC 2015插件安装方法
    搭建自己的OpenWrt开发环境
    【OpenWRT】 Chaos Calmer 15.05 编译
  • 原文地址:https://www.cnblogs.com/zziss/p/1731883.html
Copyright © 2011-2022 走看看