窗口模版

窗口模版

1.       定义窗口模版的ID

wgui_categories_defs.h文件中有枚举enum MMI_CATEGORY_ID_LIST

首先要在MMI_CATEGORY_ID_LIST中添加窗口模版的ID,例如:

MMI_CATEGORY36_ID

2.       控件坐标和控件数组的定义

CustCoordinates.c (plutommi"customer"custresource)        

控件坐标和控件数组的定义都是在CustCoordinates.c文件的

注意:在wgui_categories_defs.h中窗口ID的顺序与dm_category_id_control_set_map_struct g_categories_controls_map中窗口模版ID、控件数组和控件坐标的映射关系的顺序应该是一一对应的。

CustCoordinates.c中,const dm_category_id_control_set_map_struct g_categories_controls_map[]下面有这样一句话:

 /* The sequence of category id should be listed in ascending order */

const dm_category_id_control_set_map_struct g_categories_controls_map[]

这是将窗口模版ID、控件数组和控件坐标关联起来的数组,例如:

{MMI_CATEGORY36_ID, (U8 *) list_menu_category, (S16 *) common_coordinate_set, (S16 *) common_rotated_coordinate_set}

第一个参数是窗口模版的ID

就是在wgui_categories_defs.h定义的ID

第二个参数是控件数组:

这也是在CustCoordinates.c中定义的,例如36号窗体模版的控件数组:

const U8 list_menu_category[] =

{

    5,                     // 表示的是这个窗口模版有5个控件

    DM_BASE_LAYER_START, //基本层

    DM_SCR_BG,                      //背景图片

DM_BASE_CONTROL_SET1,

//状态栏、标题和软按键DM_STATUS_BAR1 DM_BUTTON_BAR1

    DM_LIST1,   //列表控件

    DM_FLY_ANNIMATION 

};

这些组件被定义在wgui_draw_manager.h文件的枚举结构mmi_dm_control_ids_enum中,如果需要添加自己定义的控件,则需要在这里添加相应的ID

 

第三个参数是竖屏时各控件的坐标,例如36号窗口模版的如下所示:

const S16 common_coordinate_set[] =

{

    DM_FULL_SCREEN_COORDINATE_FLAG,

    DM_CONTENT_COORDINATE, DM_CENTRE_ALIGN_X | DM_CENTER_ALIGN_Y,

    3, DM_SHIFTIN_ANNIMATION_TOP, 0, 0, LCD_WIDTH, MMI_TITLE_HEIGHT, 0, 0,

         DM_SHIFTIN_ANNIMATION_LEFT, 0, MMI_TITLE_HEIGHT, LCD_WIDTH/2, LCD_HEIGHT - MMI_SOFTKEY_HEIGHT - MMI_TITLE_HEIGHT, 0, MMI_TITLE_HEIGHT,

             DM_SHIFTIN_ANNIMATION_RIGHT, LCD_WIDTH/2, MMI_TITLE_HEIGHT, LCD_WIDTH/2, LCD_HEIGHT - MMI_SOFTKEY_HEIGHT - MMI_TITLE_HEIGHT, LCD_WIDTH/2, MMI_TITLE_HEIGHT,    

};

一般情况下,DM_SCR_BGDM_BASE_CONTROL_SET1的坐标不需要另外说明,定义控件的坐标有两种方法:

(一)   用系统预定义的标志

例如:DM_FULL_SCREEN_COORDINATE_FLAG

wgui_draw_manager.h中可以找到一系列标志的定义

S16 *dm_get_coordinates(S16 *UICtrlAccessPtr_p, dm_coordinates *dm_coordinate_info)函数中可以查看其实际的意义。

(二)   自己定义

定义的顺序是:X坐标,Y坐标,宽,高,标志(一般是DM_NO_FLAGS,自定义坐标有效)

例如:

0, MMI_TITLE_HEIGHT, MAIN_LCD_DEVICE_WIDTH, MAIN_LCD_DEVICE_HEIGHT - MMI_TITLE_HEIGHT - MMI_BUTTON_BAR_HEIGHT, DM_NO_FLAGS

第四个参数是横屏时的坐标,如下是36号窗口的定义,具体意义类似竖屏的定义

const S16 common_rotated_coordinate_set[] =

{

    DM_FULL_SCREEN_COORDINATE_FLAG,

    DM_CONTENT_COORDINATE, DM_CENTRE_ALIGN_X | DM_CENTER_ALIGN_Y,

};

3.       控件的初始化

void ShowCategory36Screen(

        U16 title,

        U16 title_icon,

        U16 left_softkey,

        U16 left_softkey_icon,

        U16 right_softkey,

        U16 right_softkey_icon,

        S32 number_of_items,

        U8 **list_of_items,

        U16 highlighted_item,

        U8 *history_buffer)

{

    dm_data_struct dm_data;

    S32 i;

    U8 h_flag;

    gdi_layer_lock_frame_buffer();

   create_fixed_twostate_menuitems(get_image(RADIO_ON_IMAGE_ID), get_image(RADIO_OFF_IMAGE_ID));

   associate_fixed_twostate_list();

 

    ShowListCategoryScreen(

        get_string(title),

        get_image(title_icon),

        get_string(left_softkey),

        get_image(left_softkey_icon),

        get_string(right_softkey),

        get_image(right_softkey_icon),

        number_of_items);

 

 resize_fixed_twostate_menuitems(0, MMI_MENUITEM_HEIGHT);

 

if (mmi_frm_is_screen_width_height_swapped())

           set_fixed_twostate_positions(MMI_MENUITEM_HEIGHT << 1, 0, MMI_MENUITEM_HEIGHT + 1, 0);

else

           set_fixed_twostate_positions(MMI_MENUITEM_HEIGHT + 2, 0, 1, 0);

 

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

    {

        add_fixed_twostate_item((UI_string_type) list_of_items[i]);

    }

 

    register_fixed_list_highlight_handler(standard_radio_list_highlight_handler);

    h_flag = set_list_menu_category_history(MMI_CATEGORY36_ID, history_buffer);

    if (h_flag)

    {

        fixed_list_goto_item_no_redraw(MMI_fixed_list_menu.highlighted_item);

    }

    else

    {

        fixed_list_goto_item_no_redraw(highlighted_item);

    }

    select_fixed_twostate_item(MMI_fixed_list_menu.highlighted_item);

    resize_fixed_twostate_menuitems_to_list_width();

    gdi_layer_unlock_frame_buffer();

    ExitCategoryFunction = ExitListCategoryScreen;

    RedrawCategoryFunction = dm_redraw_category_screen;

    GetCategoryHistory = dm_get_category_history;

    GetCategoryHistorySize = dm_get_category_history_size;

    dm_data.s32ScrId = (S32) GetActiveScreenId();

    dm_data.s32CatId = MMI_CATEGORY36_ID;

    dm_data.s32flags = 0;

    dm_setup_data(&dm_data);

    dm_redraw_category_screen();

4.        

转载于:https://www.cnblogs.com/menghuanshitou/archive/2009/06/18/1506170.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩Java 8 – Lambda,路径和文件

我最近需要读取一堆文件&#xff0c;而不是仅仅抓住我和可能是大多数开发人员拥有的旧FileUtils.java&#xff0c;然后从一个项目复制到另一个项目&#xff0c;我决定快速了解其他方法。 是的&#xff0c;我知道有Commons IO和Google IO &#xff0c;我为什么还要打扰&#xf…

vs.net2003无法打开.NET的Web应用服务

今天想打开web项目时提示&#xff1a;Visual Studio .NET 已检测到指定的Web服务器运行的不是ASP.NET 1.1版。您将无法运行ASP.NET Web应用原因大概是自己原来安装VS.NET2003时没有安装IIS&#xff0c;后来才装上的。自己重新安装了.NET Framework1.1还是不行。后来找到了找这个…

vue组件-使用插槽分发内容(slot)

slot--使用插槽分发内容&#xff08;位置、槽口&#xff1b;作用: 占个位置&#xff09; 官网API&#xff1a; https://cn.vuejs.org/v2/guide/components.html#使用插槽分发内容 使用组件时&#xff0c;有时子组件不知道会收到什么内容&#xff0c;这是由父组件决定的。 一…

LeetCode 上最难的链表算法题,没有之一!

题目来源于 LeetCode 第 23 号问题&#xff1a;合并 K 个排序链表。 该题在 LeetCode 官网上有关于链表的问题中标注为最难的一道题目&#xff1a;难度为 Hard &#xff0c;通过率在链表 Hard 级别目前最低。 题目描述 合并 k 个排序链表&#xff0c;返回合并后的排序链表。请分…

处理Akka应用程序中的每个事件

这里的事件&#xff0c;那里的事件&#xff0c;到处都是事件。 发布有关检查每一项Akka事件最终都能找到归宿的信息。 Akka和基于事件的反应式应用程序是创建软件的新方法。 在当前基于Scala的项目中&#xff0c;我们非常密集地使用Akka。 事件非常适合我们的用例&#xff0c;…

js设置select列表中特定项为选中状态

设置select中text"paraText"的第一个Item为选中 function jsSelectItemByValue(objSelect,objItemText) { //判断是否存在 var isExit false; for(var i0;i<objSelect.options.length;i) { if(objSelect.options[i].text objItemText) { objSelect.options[i].s…

vue 导出html

vue的html代码 <template> <div class"contentsss" ref"test"> <button click"export2Excel">导出</button> </div> </template>methods方法 export2Excel() { var a document.createElement("a"…

js快排

快排的思路&#xff1a;选定一个基准数&#xff0c;要使得基数的左边的数字全部小于它&#xff0c;右边的数字全部大于它。分别设i和j从左右开始寻找&#xff0c;从左边找到第一个比基数大的数&#xff0c;从右边找到第一个比基数小的数&#xff0c;然后交换这两个数。 当i和j…

jzoj 6302. 提高组

Description 详见OJ Solution 对于\(limit1,2\)就是使序列\(1~n\)的排列。 对于\(limit3\)&#xff0c;我们可以将其看做是两个最长上升子序列正好覆盖整个序列&#xff0c;证明显然。 我们可以做一个前缀\(max\)序列。这样对于\(max[i]\)&#xff0c;保证\(max[i]>i\)。 而…

使用IntelliJ ..达2周,到目前为止一切正常

几乎已经过去了2个星期&#xff0c;我已经完全切换到IntelliJ作为我在家里和工作中的主要Java IDE。 到目前为止一切顺利&#xff0c;这是我的初步发现。 迁移 &#xff1a;我花了几个小时来迁移项目。 最终&#xff0c;如果您的项目已经Mavenized&#xff0c;事情就简单了&am…

WEB框架研究笔记一(准备)

DELPHI框架基本完成之后&#xff0c;开发一个WEB框架的想法越来越强烈&#xff0c;一直以来没有过完整的开发过一个WEB项目&#xff0c;这几年来&#xff0c;也就看过几个WEB的产品&#xff0c;了解了一下Struts&#xff0c;去年研究了一下DORADO&#xff0c;顺便了解了SpringH…

备份文件夹

用到的API和数据结构&#xff1a; WINDOWS数据结构&#xff1a; WIN32_FIND_DATA WINDOWS API&#xff1a; FindFirstFile FindNextFile CompareFileTime CopyFIle DeleteFile View Code #include <windows.h> #include <iostream> #include <string> using…

面试整理(1):原生ajax

接到电话面试&#xff0c;有一些送分题答的不好&#xff0c;在这里整理一下 问题&#xff1a;原生ajax的工作流程是怎么样的&#xff1f; 老用封装好的工具&#xff0c;原生的ajax其实并不熟悉&#xff0c;今天复习一下。主要参考http://www.w3school.com.cn/ajax/ 要发一个…

QT

Qt软件 Qt是一个跨平台的C图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 自从1996年早些时候&#xff0c;Qt进入商业领域&#xff0c;它已经成为全…

IOS获取资源路径

1. 获取已经添加到xcode工程中的某一资源文件 file.txt 的路径 NSString *filePath_ [[NSBundle mainBundle] pathForResource:"file" ofType:"txt"]; std::string filePath std::string([filePath_ UTF8String]); 2. 对当前xcode工程开通沙盒权限后&#…

我从ColdFusion迁移到Java开发

尽管我在大学和研究生的整个职业生涯中都研究和尝试了不同的开发技术和工具&#xff0c;但我的全职职业生涯始于Adobe ColdFusion的开发。 从学校毕业后&#xff0c;使用技术解决现实世界中的业务问题本身就是一个挑战。 由于其相当简单的性质&#xff0c;ColdFusion不会妨碍您…

Azure IoT Hub和Event Hub相关的技术系列-索引篇

Azure IoT Hub和Event Hub相关的技术系列&#xff0c;最近已经整理了不少了&#xff0c;统一做一个索引链接&#xff0c;置顶。 Azure IoT 技术研究系列1-入门篇 Azure IoT 技术研究系列2-设备注册到Azure IoT Hub Azure IoT 技术研究系列3-设备到云、云到设备通信 Azure IoT 技…

spiderUI窗口过小解决

复制以下代码&#xff0c;直接替换此css样式即可&#xff1a; C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\webui\static\debug.min.css body{margin:0;padding:0;height:100%;overflow:hidden}.warning{color:#f0ad4e}.error{…

js获得页面鼠标位置

1.客户区坐标位置&#xff1a;clientX&#xff0c;clientY 鼠标相对于在当前页面可视范围左上角的位置 2.页面坐标位置&#xff1a;pageX,pageY 鼠标相对于页面左上角的位置&#xff08;受滑动等影响&#xff0c;例如pageYclientY scrollTop&#xff09; 3.屏幕坐标位置&#x…

针对新手的Java EE7和Maven项目–第7部分

从前面的部分恢复 第1 部分 &#xff0c; 第2 部分 &#xff0c; 第3 部分 &#xff0c; 第4 部分 &#xff0c; 第5 部分 &#xff0c; 第6部分 在上一篇文章&#xff08;第6章&#xff09;中&#xff0c;我们发现了如何使用Arquillian和Wildfly 8.1进行单元测试JPA2域模型。…