主菜单界面入口 voif goto_main_menu(void)


/****************************************************************************** FUNCTION*  goto_main_menu* DESCRIPTION*  Lanch the main menu group*****************************************************************************/
void goto_main_menu(void)
{
#ifdef __MYSTUDY_APPLICATION__mtk_helloworld();return;
#endif#ifdef __MMI_VUI_LAUNCHER__
#ifdef __MMI_VUI_LAUNCHER_KEY__if(mmi_phnset_launcher_get_launcher_type() == MMI_PHNSET_LAUNCHER_KEY)vapp_launcher_mm_launch(NULL, 0);else
#endifvapp_drawer_launch(NULL, 0);return;
#endif /* __MMI_VUI_LAUNCHER__ */#ifdef __MMI_VUI_LAUNCHER_KEY__vapp_launcher_mm_launch(NULL, 0);return;
#endifg_main_menu_group_id = mmi_frm_group_create(GRP_ID_ROOT, GRP_ID_AUTO_GEN, mmi_main_menu_proc, NULL);mmi_frm_group_enter(g_main_menu_group_id, MMI_FRM_NODE_SMART_CLOSE_FLAG);mmi_main_menu_entry();
}

界面的ID号 g_main_menu_group_id 需要自己创建,创建函数是mmi_frm_group_create(),创建 g_main_menu_group_id的目的是方便对界面统一化管理,当关闭界面时只要关闭g_main_menu_group_id即可,而不用逐一地去关闭子界面。

typedef U16                 MMI_ID;         /* app id, group id, screen id *//*
**形参意义 parent_id group_id
**        mmi_proc_func proc菜单的时间处理函数
*/
MMI_ID mmi_frm_group_create (MMI_ID parent_id, MMI_ID group_id, mmi_proc_func proc, void *user_data)
{}

事件处理函数 mmi_main_menu_proc(mmi_event_struct* evt)

/****************************************************************************** FUNCTION*  mmi_main_menu_proc* DESCRIPTION*  main menu group proc* PARAMETERS*  evt  [IN] event* RETURNS*  mmi_ret*****************************************************************************/
static mmi_ret mmi_main_menu_proc(mmi_event_struct* evt)
{
#ifdef __MMI_MAINMENU_SPREAD_SUPPORT__MMI_BOOL closeMenu = MMI_FALSE;
#endif#ifdef __MMI_MAINMENU_SPREAD_SUPPORT__switch(evt->evt_id){// 菜单进入case EVT_ID_CUI_MENU_LIST_ENTRY:{break;}// 菜单的选择case EVT_ID_CUI_MENU_ITEM_SELECT:{cui_menu_event_struct *event = (cui_menu_event_struct *)evt;if (event->highlighted_menu_id == MENU_ID_MAIN_MENU_OPTIONS_OPEN){mmi_main_menu_launch_app();}else if (event->highlighted_menu_id == MENU_ID_MAIN_MENU_OPTIONS_UNINSTALLED){mmi_main_menu_uninstall_app();}break;}// 菜单的退出case EVT_ID_CUI_MENU_CLOSE_REQUEST:{cui_menu_event_struct *event = (cui_menu_event_struct *)evt;cui_menu_close(event->sender_id);break;}default:break;}
#endif// 整个界面的激活和注销switch(evt->evt_id){case EVT_ID_GROUP_ACTIVE:case EVT_ID_GROUP_INACTIVE:case EVT_ID_GROUP_DEINIT:break;default:break;}return MMI_RET_OK;
}

控件

/*
**CustCoordinates.c D:\MT2503DMMI-11C\MT2503DMMI-11C\plutommi\Customer\CustResource
**
**这个文件定义了所有的控件
*/
const U8 category166[] =
{2,DM_BASE_LAYER_START,                // 图层DM_CATEGORY_CONTROLLED_AREA         // 全屏的内容编辑
};

界面的显示部分ShowCategory***Screen()

/****************************************************************************** FUNCTION*  ShowCategory314Screen* DESCRIPTION*  show category 314 screen* PARAMETERS*  title                       [IN]        Title string*  title_icon                  [IN]        Title icon ID*  number_of_items             [IN]        Total count of number*  list_of_items               [IN]        String list of items*  list_of_icons               [IN]        Icon list of items*  list_of_descriptions        [IN]        Description list of items*  highlighted_item            [IN]        Highlighted item*  history_buffer              [IN]        History buffer* RETURNS*  void*****************************************************************************/
void ShowCategory314Screen(U8 *title,U16 title_icon,S32 number_of_items,U16 *list_of_items,U16 *list_of_icons,U8 **list_of_descriptions,S32 highlighted_item,U8 *history_buffer)
{/*----------------------------------------------------------------*//* Local Variables                                                *//*----------------------------------------------------------------*/dm_data_struct dm_data;S32 i;U8 h_flag;GDI_HANDLE act_lcd = GDI_ERROR_HANDLE;gdi_handle sub_handle;/*----------------------------------------------------------------*//* Code Body                                                      *//*----------------------------------------------------------------*/SUBLCD_ExitCategoryFunction();gdi_lcd_get_active(&act_lcd);if (act_lcd != GDI_LCD_SUB_LCD_HANDLE){UI_set_sub_LCD_graphics_context();}    gdi_layer_lock_frame_buffer();dm_add_title((UI_string_type) title, get_image(0)); /* sublcd can't show title icon */wgui_fixed_list_create_icontext_menu(number_of_items,highlighted_item,0,MMI_CATEGORY314_ID,history_buffer);wgui_status_icon_bar_reset_display(WGUI_STATUS_ICON_BAR_SUBLCD_H_BAR);resize_fixed_icontext_menuitems(MMI_fixed_list_menu.width - MMI_fixed_list_menu.vbar.width - 1,MMI_fixed_icontext_menuitem.height);MMI_fixed_list_menu.flags |= UI_LIST_MENU_DISABLE_BKGRND_IN_LAYER;gdi_layer_get_base_handle(&sub_handle);MMI_fixed_list_menu.act_layer_handle = sub_handle;MMI_fixed_list_menu.act_lcd_handle = GDI_LCD_SUB_LCD_HANDLE;wgui_fixed_list_begin_add_icontext_one_item();if (list_of_descriptions == NULL){for (i = 0; i < number_of_items; i++){wgui_fixed_list_add_icontext_one_item(i, (U8*) get_string(list_of_items[i]), wgui_get_list_menu_icon(i, list_of_icons[i]), NULL);}}else{for (i = 0; i < number_of_items; i++){wgui_fixed_list_add_icontext_one_item(i, (U8*) get_string(list_of_items[i]), wgui_get_list_menu_icon(i, list_of_icons[i]), list_of_descriptions[i]);}}wgui_fixed_list_end_add_icontext_one_item();wgui_fixed_list_resize_icontext_menu(UI_device_width, UI_device_height - MMI_SUBLCD_TITLE_HEIGHT);gdi_layer_unlock_frame_buffer();SUBLCD_ExitCategoryFunction = ExitCategory314Screen;dm_setup_category_functions(dm_redraw_category_screen, dm_get_category_history, dm_get_category_history_size);dm_data.s32ScrId = (S32) GetActiveScreenId();dm_data.s32CatId = MMI_CATEGORY314_ID;dm_data.s32flags = DM_SUB_LCD_CONTEXT;dm_sublcd_setup_data(&dm_data);dm_sublcd_redraw_category_screen();if (act_lcd == GDI_LCD_MAIN_LCD_HANDLE){UI_set_main_LCD_graphics_context();}}

界面的设计代码,这里可以自己修改编辑

/****************************************************************************** FUNCTION*  DrawCate113CategoryControlArea* DESCRIPTION*  Cateogry 113 control area redraw callback*****************************************************************************/
static void DrawCate113CategoryControlArea(dm_coordinates *coordinate)
{UI_UNUSED_PARAMETER(coordinate);RedrawCate113IconArray();
}

按钮的注册 SetKeyHandler( ExitSubLCDMainMenuScreen, KEY_FWD, KEY_EVENT_UP);

void SetKeyHandler(FuncPtr funcPtr, U16 keyCode, U16 keyType)
{mmi_frm_set_key_handler(funcPtr, keyCode, keyType);
}

MTK界面代码详解——新增“Hello,world!”开机界面相关推荐

  1. android收藏功能demo,Android使用Realm数据库实现App中的收藏功能(代码详解)

    前 言 App数据持久化功能是每个App必不可少的功能,而Android最常用的数据持久化方式主要有以下的五种方式: 使用SharedPreferences存储数据: 文件存储数据: SQLite数据 ...

  2. yii mysql 事务处理_Yii2中事务的使用实例代码详解

    前言 一般我们做业务逻辑,都不会仅仅关联一个数据表,所以,会面临事务问题. 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全 ...

  3. jedis操作set_Jedis对redis的五大类型操作代码详解

    本篇主要阐述Jedis对redis的五大类型的操作:字符串.列表.散列.集合.有序集合. JedisUtil 这里的测试用例采用junit4进行运行,准备代码如下: private static fi ...

  4. python split函数 空格_最易懂的Python新手教程:从基础语法到代码详解

    导读:本文立足基础,讲解Python和PyCharm的安装,及Python最简单的语法基础和爬虫技术中所需的Python语法. 作者:罗攀 蒋仟 如需转载请联系华章科技 本文涉及的主要知识点如下: P ...

  5. 来FAL学风控|风控策略分析师的日常是怎样的?(案例+代码详解篇)

    风控策略分析师的日常是怎样的?(案例+代码详解篇) FAL金科应用研究院 做了5年的金融,3年的数据分析工作,从17年6月才真正接触代码,算不到熟练,但在不断的学习和工作实践中目前是可以解决任何问题的 ...

  6. java程序的界面编程详解

    java程序的界面编程详解 在Java中可以为程序自定义程序界面选择Windows.Unix.Java或Macintosh外观.甚至可以在程序运行时让用户自由的选择外观. UIManager和Swin ...

  7. GTK+实现linux聊天室代码详解-clientr端

    查看原代码请点击此超链接 注意!!此聊天室对红帽无兼容.需在其他linux系统上运行,如"深度". 加油学习! GTK+实现linux聊天室代码详解-server端:GTK+实现l ...

  8. python 制作抽奖_python制作抽奖程序代码详解

    实现制作抽奖程序,需要认知到我们可以看到一般抽奖程序界面上是有很多按钮的,比如中奖区域,按键开始区域等等,所以我们先要设置界面,然后把这些按钮添加到界面中去,想必这对于学过tkinter的同学应该不难 ...

  9. Faster RCNN代码详解(五):关于检测网络(Fast RCNN)的proposal

    在Faster RCNN代码详解(二):网络结构构建中介绍了Faster RCNN算法的网络结构,其中有一个用于生成ROI proposal target的自定义层,该自定义层的输出作为检测网络(Fa ...

最新文章

  1. c嵌入python类获取返回值
  2. VS.NET 2005 SP1 安装注意
  3. mogodb 设置用户名密码认证
  4. 手机轮廓光怎么拍_摄影技巧:怎么拍影子?手机拍照教程
  5. Tickets HDU - 1260
  6. [转]Responsive Tables Demo
  7. Openjudge_ 2.1基本算法之枚举_1809 两倍 C++ scratch
  8. 【转】关于VB中Shell及ShellExecute的总结与记录
  9. utilities(C++)——枚举
  10. six.move 的作用
  11. java之Cookie详解
  12. 全卷积网络 FCN 详解
  13. No package ‘mate-desktop-2.0‘ found
  14. [SUCTF 2019]EasyWeb---无参数RCE
  15. 【设计鉴赏】精选字体设计鉴赏
  16. 51单片机的汇编语言
  17. AutoCAD .NET 二次开发实例(2) 批量统计指定图层线段长度
  18. 工作十年的程序员,却拿着毕业三年的工资,再不开窍就真晚了!
  19. LogLog Counting
  20. 谷歌浏览器怎么打开开发者模式 谷歌浏览器打开开发者模式的方法

热门文章

  1. [C++] [OpenGL] 用FreeType渲染文字
  2. 最新Java面试八股文,1000+面试题答案详解全面看完拿下大厂offer
  3. 大专学计算机还是轨道交通,专科工资高的十大专业 大专学什么专业好
  4. 四元数和向量相乘,向量间的点乘和叉乘
  5. oracle数据库连接加密,oracle 数据库加加密。
  6. 平面设计的三大基本元素
  7. js数组中是否包含某个字符串
  8. 东南亚投资热:直播电商在创投圈迅速崛起,金融科技成为投融资最热门赛道之一 | 美通社头条...
  9. 【mysql 最大连接数】5分钟快速修改mysql最大连接数
  10. 怎么提升自己的c语言算法,如何快速提高自己的编程能力