gui控件绘制列表菜单

步骤:

1. 先创建一个列表菜单框架,

fixed_list_menu My_fixed_list_menu;//声明菜单框架

Memset(&My_fixed_list_menu,0,sizeof(fixed_list_menu));

gui_create_fixed_list_menu(&My_fixed_list_menu,20,MMI_content_y+5,136,MMI_content_height-50);//位置和大小

MMI_current_menu_type=LIST_MENU;

2.创建菜单项,

2.1 设置公共属性

fixed_icontext_menuitem My_fixed_icontext_menuitem_common;//菜单项公共属性

memset(&My_fixed_icontext_menuitem_common,0,sizeof(fixed_icontext_menuitem));

gui_create_fixed_icontext_menuitem(&My_fixed_icontext_menuitem_common,200,40);//设置宽高

gui_fixed_icontext_menuitem_set_text_position(&My_fixed_icontext_menuitem_common,24,0);//设置文本偏移位置

My_fixed_icontext_menuitem_common.flags |=UI_MENUITEM_DISALE_BACKGROUND;

2.2设置菜单项的单项属性

#define nitems (4)//菜单项的数目

fixed_icontext_menuitem_type My_fixed_list_menuitem[nitems];//icontext型的菜单项

void *My_fixed_menuitem_pointers[nitems];//指向菜单项列表的索引列表

memset(&My_fixed_list_menuitems,0,sizeof(fixed_list_icontext_menuitem)*nitems);

for(i=0;i<nitems;i++)

{

My_fixed_list_menuitems[i].item_text=(UI_string_type)GetString(STR_MMI_MYAPP+i);//菜单项文本

My_fixed_list_menuitems[i].item_icon=(PU8)GetImage(IMG_GLOBAL_L1+i);//菜单项图标

My_fixed_list_menuitems[i].flags=(UI_MENUITEM_CENTER_TEXT_Y|UI_MNEUITEM_CENTER_ICON_Y);

My_fixed_list_menuitems[i].item_icon_handle=GDI_ERROR_HANDLE;

My_fixed_menuitem_pointers[i]=(void*)&My_fixed_list_menuitems[i];//给索引项赋值(数据地址)

}

3.联合菜单框架和菜单项,

My_fixed_list_menu.items=My_fixed_menuitem_pointers;//菜单项索引列表

My_fixed_list_menu.common_item_data=(void*)&My_fixed_icontext_menuitem_common;//菜单项公共属性

My_fixed_list_menu.n_items=nitems;

gui_set_fixed_list_menu_item_functions(&My_fixed_list_menu,

gui_show_fixed_icontext_menuitem,//显示菜单函数

gui_measure_fixed_icontext_mneuitem,//测量菜单项

gui_highlight_fixed_icontext_menuitem,//高亮函数

gui_remove_highlight_fixed_icontext_menuitem,//失去高亮函数

gui_hide_fixed_icontext_menuitem,//菜单项隐藏函数

resize_fixed_icontext_menuitems,//重设菜单项大小

gui_get_fixed_icontext_list_menuitem_flag//

);

4.显示菜单。

S32  highlight_item=0;//菜单高亮项

My_fixed_list_menu.highlighted_item=-1;

//菜单高亮项索引,此为菜单框架内部属性值,在跳转之前一定要设置为-1

gui_fixed_list_menu_goto_item(&My_fixed_list_menu,highlight_item);

gui_show_fixed_list_menu(&My_fixed_list_menu);

5.进入菜单项功能函数

void mmi_myapp_highlight_handler(S32 item_index)//菜单高亮时
{
     mmi_myapp_draw_text(item_index);
     switch(item_index)
        {
            case 0:
                SetLeftSoftkeyFunction(mmi_myapp_app1_entry,KEY_EVENT_UP);
                break;
            case 1:
                SetLeftSoftkeyFunction(mmi_myapp_app2_entry,KEY_EVENT_UP);
                break;

 

case 2:
            SetLeftSoftkeyFunction(mmi_myapp_app3_entry,KEY_EVENT_UP);
            break;
                case 3:
            SetLeftSoftkeyFunction(mmi_myapp_app4_entry,KEY_EVENT_UP);
            break;
                case 4:
            SetLeftSoftkeyFunction(mmi_myapp_app5_entry,KEY_EVENT_UP);
            break;

default:
                    mmi_myapp_app1_entry();
                    break;
        }
}

///

在菜单函数中增加左软键功能

SetLeftSoftkeyFunction(mmi_myapp_highlight_handler,KEY_EVENT_UP);

为什么要这样做?

刚进入菜单时,高亮项的处理函数是不执行的,也就是说不进行刷屏的话是获取不到item_index的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值