博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DM模板使用心得
阅读量:4044 次
发布时间:2019-05-24

本文共 2124 字,大约阅读时间需要 7 分钟。

1.   很多ShowCategoryXXXScreen函数都调用ShowListCategoryScreen,使用改函数可简化模板的绘制工作,

     现在分析一下ShowListCategoryScreen到底做了什么工作:
     (1)  设置Title
          将title文本及图标数据-->全局变量MMI_title_string,MMI_title_icon
     (2)  shortcut
     (3)  Softkeys
          实际上是完成了对左右软键的重画
     (4)  List
          编辑菜单样式
          注册方向键
          ......

2.   新建DM模板

Step1.  Wgui_categories_enum.h
        位置: ../plutommi/gui/gui_src/Wgui_categories
        新建一个模板ID: MMI_CATEGORYWTXYZ2_ID
Step2.  CustCoordinates.c
        位置: ../plitommi/customer/custresource/CustCoordinates.c
        A. 在g_categories_controls_map[]中加入:
           {MMI_CATEGORYWTXTZ2_ID,(U8*)categoryWTXYZ2,(S16*)coordinate_setWTXYZ2,NULL}
        B. 创建新模板的控件数组
           const U8 categoryWTXYZ2[]=       
           {
                5,
                DM_BASE_LAYER_START,
                DM_SCR_BG,
                DM_BASE_CONTROL_SET1,
                DM_SINGLELINE_INPUTBOX1,
                DM_LIST1
           };
        C. 创建新模板的属性集
           const S16 coordinate_setWTXYZ2[]=
           {
                DM_FULL_SCREEN_COORDINATE_FLAG,
                DM_CUSTOM_DEFINE_INPUTBOX,      // should be defined
                DM_CUSTOM_DEFINE_LIST           // should be defined
           };
Step3.  Wgui_draw_manager.h
        位置: ../plutommi/gui/gui_inc/Wgui_draw_manager.h
        在mmi_dm_control_ids_enum枚举中定义新的属性: DM_CUSTOM_DEFINE_INPUTBOX, DM_CUSTOM_DEFINE_LIST
Step4.  Wgui_draw_manager.c
        位置: ../plutommi/gui/gui_src/Wgui_draw_manager.c
        更新函数 dm_get_coordinates( )
        在dm_get_coordinates( )增加对新属性的处理:

    else if( *UICtrlAccessPtr_p==DM_CUSTOM_DEFINE_LIST )

    {
        dm_coordinate_info->s16X = (S16)MMI_custom_listbox_x;
        dm_coordinate_info->s16Y = (S16)MMI_custom_listbox_y;
        dm_coordinate_info->s16Width = (S16)MMI_custom_listbox_width;
        dm_coordinate_info->s16Height = (S16)MMI_custom_listbox_height;
        dm_coordinate_info->Flags = DM_NO_FLAGS;
        UICtrlAccessPtr_p ++ ;
     }
     else if( *UICtrlAccessPtr_p==DM_CUSTOM_DEFINE_INPUTBOX )
    {
        dm_coordinate_info->s16X = (S16)MMI_custom_inputbox_x;
        dm_coordinate_info->s16Y = (S16)MMI_custom_inputbox_y;
        dm_coordinate_info->s16Width = (S16)MMI_custom_inputbox_width;
        dm_coordinate_info->s16Height = (S16)MMI_custom_inputbox_height;
        dm_coordinate_info->Flags = DM_SINGLE_LINE_INPUTBOX_SPECIFIC_HEIGHT;
        UICtrlAccessPtr_p ++ ;
     }

Step5.  Wgui.h

        位置: ../plutommi/gui/gui_inc/Wgui.h
        定义新的属性信息: MMI_custom_listbox_x, MMI_custom_listbox_y, ...
Step6.  Wgui_category.c
        位置: ../sw/plutommi/gui/gui_src/Wgui_category.c
        A. 编写模板相关函数
        B. 添加用户事件定义接口(wgui_category.h) 

转载地址:http://lwedi.baihongyu.com/

你可能感兴趣的文章
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
如何构建高扩展性网站
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
WAV文件解析
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
Ubuntu+win10远程桌面
查看>>
flutter-实现圆角带边框的view(android无效)
查看>>
android 代码实现圆角
查看>>
flutter-解析json
查看>>
android中shader的使用
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
drat中构造方法
查看>>
JavaScript的一些基础-数据类型
查看>>