• Symbian菜单:创建一个最简单的菜单


    Symbian菜单:创建一个最简单的菜单

    菜单由 MENU_BAR,MENU_TITLE,MENU_PANE,MENU_ITEM 组成

    MENU_TITLE 由 MENU_PANEL 组成 ,MENU_PANE 由 MENU_ITEM 组成,可以把相似的功能菜单放到同一个 MENU_PANE 中
    而 MENU_TITLE 就是一级菜单,可以由多个 MENU_TITLE 组成一级菜单,而每一个 MENU_PANE又可以是某个 MENU_ITEM的子
    菜单,通过 MENU_ITEM 的 cascade 关联起来,有点绕,但动手操作一下就明白了

    第一步:写菜单命令

    在 hrh 文件中写

    enum TMenuGames
    {
     EMenu1CmdNewGame = 0x6000,
     EMenu1CmdPlayer,
     EMenu1CmdOnePlayer,
     EMenu1CmdTwoPlayer
    };
     


    这里需要注意的是 hrh 文件只写 enum 类型,容易出错的地方在 “}”的结尾一定要加上“”号,我第一次没有加上怎么运行都报错

    第二步: 写 loc 文件

    loc 文件定义了菜单的文本显示

    #define qtn_menu_new_game  "New Game"
    #define qtn_menu_one_player  "One Player"
    #define qtn_menu_two_player  "Two Player"
    #define qtn_menu_player "Player"


    这里同样需要注意,第一次写成了 #define qtn_menu_new_game = "New Game" 多了一个 “=”号,所以编译时提示找到不  label 的错误

    第三步:写 rss 文件

      1. 先写 MENU_BAR
        RESOURCE MENU_BAR r_menubar 
        {
            titles=
            {
                MENU_TITLE { menu_pane=r_gamePlayPane;txt=""}
            };
        }

        需要注意的是 titles 的 “{}”后要添加上“”,这里的 MENU_TITLE 可以写多个,写多个则会把每个 MENU_TITLE关联的 MENU_PANE中的菜单做为一级菜单,menu_pane 指定一个 MENU_PANE 对像
      2. 写 MENU_PANE

        RESOURCE MENU_PANE r_gamePlayPane
        {
         items=
         {
             MENU_ITEM { command = EMenu1CmdPlayer; txt = qtn_menu_player;cascade=r_gamePlayers;},
          MENU_ITEM { command=EAknCmdExit; txt=qtn_appl_exit;}
         };
        }


        RESOURCE MENU_PANE r_gamePlayers
        {
         items=
         {
          MENU_ITEM { command = EMenu1CmdOnePlayer;txt=qtn_menu_one_player;},
          MENU_ITEM { command = EMenu1CmdOnePlayer;txt=qtn_menu_two_player;}
         };
        }

         
        对于 MENU_PANE 只需要指定 items 就行了, items 代表菜单项的集合,由 MENU_ITEM 组成
        MENU_ITEM 中的 commmand 是指这个菜单所关联的命令(在 hrh 文件中的enum值),txt是显示的文本,如果有子菜单则用 cascade 指出来
      3. 写好 menu_bar 的资源了,然后该把它放到系统中让它显示出来了。
        RESOURCE EIK_APP_INFO
            {
            hotkeys = r_menu1_hotkeys;
            menubar = r_gameMenu;
            cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;    
            }
        红色部分就是指定到系统的菜单中

    运行程序就看到效果了

    总结,在写这个资源时,一直编译不过,第一次错误是 loc 文件写错了,第二次是 hrh 忘了加 “;”号了,第三次是 MENU_ITEM 写成 MENU_ITME了,结果第三次没有报错,一打开程序就出错,后来一点点排除才找到错误



    安平2009@原创
    qi_jianzhou@126.com

  • 相关阅读:
    centos软件安装
    新手根据菜鸟教程安装docker,从No package docker-io available开始遇到的坑...
    性能基准测试:KVM大战Xen
    Netdata---Linux系统性能实时监控平台部署记录
    Linux Storage Stack Diagram存储堆栈图
    /proc目录下文件详解
    磁盘IO计算
    RPM包下载网址
    搜索框获取转移焦点事件
    用点击事件做红绿灯2
  • 原文地址:https://www.cnblogs.com/zziss/p/1661183.html
Copyright © 2020-2023  润新知