GUI,WGUI培训.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GUI,WGUI培训

GUI,WGUI培训 软件五部 Derek MMI构造 主要内容 1.WGUI 主要文件有:wgui.c wgui_categories.c wgui_draw_manager.c wgui_touch_screnn.c等 2.GUI 各组件GUI文件,如:gui_button.c gui_fixed_menus.c gui_ems.c等 WGUI WGUI:Wrap GUI 对各类GUI接口的封装,可以调用WGUI里的函数显示一个屏幕而不需要更底层的GUI或GDI函数 WGUI Overview: 1. 屏幕模板 2. 绘制管理(Draw Manager) 3. Touch Screen(手写) 屏幕模板 模板ID在CustCoordinates.c中定义 结构体dm_category_id_control_set_map_struct定义为 { U16 category_id; 模板ID U8* control_set_p; 控件数组指针 S16* default_coordinate_set_p; 控件属性数组指针 S16* rotated_coordinate_set_p; 目前没用 } 控件: 控件数组定义中可以看到此屏幕模板具体包含哪些控件, 第1个参数是控件数量 后面都是控件类别ID,如: DM_BASE_LAYER_START代表使用层; DM_SCR_BG表示使用背景图 DM_BASE_CONTROL_SET1表示窗体基本组成,有状态栏,标题,软按键 DM_MULTILINE_INPUTBOX1表示多行输入框 原始控件有:DM_STRING DM_IMAGE等 专用控件有: DM_LIST1, DM_EMS_INPUTBOX1 DM_SINGLELINE_INPUTBOX1等 数组中约靠后的控件显示越靠上层,容易接收触摸屏操作 控件属性: 以标志形式出现,如DM_FULL_SCREEN_COORDINATE_FLAG,一般屏幕都是以这个属性标志开始,它是一个窗体规格的标志ID,屏幕模板在绘制其他控件之前先绘制窗体本身 绘制管理 每个ShowCategoryXXScreen()函数最后都一段相似的代码 WGUI - Draw Manager 屏幕ID通过全局变量g_dm_data传入 dm_redraw_category_screen() 通过control_set_ptr = dm_search_control_set() UICtrlAccessPtr_p = dm_search_coordinate_set() UICtrlAccessPtr_p = dm_get_cat_scr_coordinates() 等操作将屏幕模板ID,窗体组件构成,组件属性关联到draw manager,进行统一绘制 Touch Screen 当一次触摸屏操作执行时wgui_touch_screen.c中wgui_general_pen_down_hdl()根据当前屏幕模板ID,组件属性以及触摸点位置,得到当前响应触摸事件的具体控件是哪个,变量g_pen_to_control,之后的pen_move, pen_up等操作都在这个基础上进行 GUI 1. GUI基本元素 点point 线Line 字串string 图片picture 区域area 颜色color 字体font 层layer 2. GUI组件 Button Menu,MenuItem StatusBar Title Ems Inputbox SingleLine Inputbox MultiLine Inputbox 层(Layer) 最多可同时创建4个层 每个屏幕都有一个基础层base layer,一般的显示在基础层上进行 使用多层前,先调用gdi_layer_multi_layer_enable() 结束多层操作时,调用gdi_layer_multi_layer_disable() 创建层: 创建第一个层时,可用gdi_layer_create(),再创建新层时,要用gdi_layer_create_using_outside_memory()为其分配额外的内存空间 激活层: 任何时刻只有一个层处于激活状态,所有绘制动作都在激活层上起作用,所以要先激活层 激活层的函数gdi_layer_set_active(gdi_handle) 考虑到在多层之间切换激活,更常用的函数是gdi_layer_p

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档