MSTAR GUI
1、架构 WIN32 SDK
ACT->CTL->API->GE/GOP

ACT: Customized logic parts
CTL: Behavior widgets
API: UI API
2、调 用


非UI操作UI的两种方式:
1)MApp_ZUI_ProcessKey(U8 u8IRKey) 2) Execute Action
3、Features & Behavior
HWND 行为:

WINDOW ACT窗口API调用:
如为某一个窗口增加TIMER

WINDOW CTL部件API调用:
每个CTL都有一个WinProc函数,通过MSG调用

SKINTOOLS 默认的Default Window Procedure Behavior及默认行为:

如果系统默认的Procedure不能满足需求,要手动定义WNDPROC:

事件驱动方式:
通过MSG导入到相应窗口的WINPROG

UI开发流程:
两类档案:1、BIN档,直接链接使用 2、INL档案,MSTAR_XXX_tables_c.inl 部分可修改

4、SkinTool注意事项
1) 第一次载入MSTAR.xml,IMAGE需要重新设定路径:
选中某一个图片,可以单独设置ColorKey,SHIFT多选图片设置属性

2) 窗口的新建一般使用Button

3)UI SIZE使用不同屏,可以快速调整UI X/Y/W/H适应不同分辨率的屏
Tools->Stretch System Panel

5、OSD PAGE FUNCTION
MApp_ZUI_APIwindow.c() UI资源设置:

全局API
1) MApp_ZUI_Main.c
非UI处理UI接口,包含“MApp_ZUI_Main.h”
MApp_ZUI_Init()
MApp_ZUI_MainTask() //消息分发及定时器处理
MApp_ZUI_ProcessKey() //非UI处理UI接口
MApp_ZUI_ACT_ExecuteWndAction() //非UI处理UI接口
MApp_ZUI_GetActiveOSD()
MApp_ZUI_GetPreviousOSD()
MApp_ZUI_ACT_StartupOSD()
MApp_ZUI_ACT_ShutdownOSD()
2) MApp_ZUI_APIwindow.c()/MApp_ZUI_APIwindow.h()
MApp_ZUI_API_GetMessage()
MApp_ZUI_API_PostMessage()
MApp_ZUI_API_SendMessage()
MApp_ZUI_API_ShowWindow()
MApp_ZUI_API_InvalidateRect()
MApp_ZUI_API_GetWindowData()
MApp_ZUI_API_MoveWindow()
MApp_ZUI_API_GetWindowRect()
MApp_ZUI_API_SetTimer()
MApp_ZUI_API_KillTimer()
MApp_ZUI_API_GetFocus()
MApp_ZUI_API_SetFocus()
MApp_ZUI_ACT_HandleGlobalKey()
MApp_ZUI_ACT_ExecuteWndProc()
3) 客制化:ACT PAGE
注意“MApp_ZUI_ACT_HandleKey_XXX()” return FALS/TRUE的区别
“return TRUE” 表示接收后,不继续处理,“return FALSE”会继续处理
MApp_ZUI_ACT_AppShow_XXX()
MApp_ZUI_ACT_HandleKey_XXX()
MApp_ZUI_ACT_ExecuteAction_XXX() //UI<->UI 非UI->UI操作
App_ZUI_ACT_GetDynamicText_XXX() //动态字串
MApp_ZUI_ACT_GetDynamicBmp_XXX() //动态BITMAP
MApp_ZUI_ACT_Terminate_XXX()
4、资源绑定ACTION
绑定行为、参数传递及按键导航
MSTAR_XXX_tables_c.inl

例如:
1) WIND 类别ID 代表MAP到不同的window proc
“EN_ZUI_DEFAULTWINPROC”代表的SkinTool默认的行为,即绘制页面的基本长相/查询“Keymap_Table”并导入相应的ACTION/导航操作等。
其它的类别,会在MApp_ZUI_ACTglobal.c->MApp_ZUI_ACT_ExecuteWndProc()导入到相应的WIN PROG
如:“EN_ZUI_DYNAMICTEXT_WINPROC” 会导入到MApp_ZUI_CTLdynatext.c->MApp_ZUI_ACT_DynamicTextWinProc()中
的MApp_ZUI_ACT_GetDynamicText(hWnd)最终会获取具体客制化ACT的字串内容进行显示刷新。
2) UI控件参数设定,如:EN_MSTAR_AUTOCLOSE_WINPROC 需要的参数 为100
3) UI控件状态
4) 导航设置
5) 键行为映射
1/2/5三个栏位是可手动修改的,SkinTools BUILD的时候不会被覆盖,如果多人修改UI,合代码的时候合并:1、MSTAR.xml 2、MSTAR_XXX_tables_c.inl的键绑定及1/2/5栏位。

其它资源枚举:
MSTAR_wndproc_h.inl
MSTAR_strings_enum.h
MSTAR_bitmap_EnumIndex.h
MSTAR_components_h.inl
ZUI_exefunc.h //所有UI和逻辑切割的ACTION
导入到相应PAGE,分配中枢:
MApp_ZUI_ACTglobal.c
MApp_ZUI_ACT_StartupOSD()
MApp_ZUI_ACT_HandleGlobalKey()
MApp_ZUI_ACT_ExecuteWndAction()
MApp_ZUI_ACT_ExecuteWndProc()
MApp_ZUI_ACT_PostMessageFilter()
隐藏整个菜单:
1)HIDE MAINFRAME
2)SHOW MENU_XXX_BACKGROUND

6、默认菜单行为:MApp_ZUI_APIcontrols.c
MApp_ZUI_API_DefaultWindowProc()
主要工作是:重绘/按键导入

7、其它:
关联重绘:
如,蓝色A部件重绘时,棕色矩形B部件也会重绘,原因是A部件坐标与B部件坐标部分重叠,导致重绘A的同事B部件也会被重绘。

MSTAR GUI的更多相关文章
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- 如何通过Git GUI将自己本地的项目上传至Github
最近在学习node.js和react,顺便复习了下AngluarJS相关的东西,写了些小demo想放在GitHub上,之前仅限于只申请了GitHub账号从没用过,今天花半天时间查资料认真学习Githu ...
- git图像化界面GUI的使用
GIT学习笔记 一. 基础内容 1.git是一个版本控制软件,与svn类似,特点是分布式管理,不需要中间总的服务器,可以增加很多分支. 2.windows下的git叫msysgit,下载 ...
- egret GUI 和 egret Wing 是我看到h5 最渣的设计
一个抄袭FlexLite抄的连自己思想都没有,别人精髓都不懂的垃圾框架.也不学学MornUI,好歹有点自己想法. 先来个最小可用集合吧: 1. egret create legogame --type ...
- [C#] 走进异步编程的世界 - 在 GUI 中执行异步操作
走进异步编程的世界 - 在 GUI 中执行异步操作 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5877042.html 序 这是继<开始接 ...
- 1.JAVA之GUI编程概述
下列内容为本人看毕向东老师java视频教程学习笔记! JAVA GUI图形用户界面编程: Windows 操作系统提供两种操作方式: ...
- 2.JAVA之GUI编程布局
布局管理器 容器中的组件排放方式,就是布局 常见的布局管理器: **************************************************** 1.FlowLayout(流式 ...
- 3.JAVA之GUI编程Frame窗口
创建图形化界面思路: 1.创建frame窗体: 2.对窗体进行基本设置: 比如大小.位置.布局 3.定义组件: 4.将组件通过add方法添加到窗体中: 5.让窗体显示,通过setVisible(tur ...
- 4.JAVA之GUI编程事件监听机制
事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...
随机推荐
- [Algorithm] JavaScript Graph Data Structure
A graph is a data structure comprised of a set of nodes, also known as vertices, and a set of edges. ...
- 综合运用: C++11 多线程下生产者消费者模型详解(转)
生产者消费者问题是多线程并发中一个非常经典的问题,相信学过操作系统课程的同学都清楚这个问题的根源.本文将就四种情况分析并介绍生产者和消费者问题,它们分别是:单生产者-单消费者模型,单生产者-多消费者模 ...
- 实现TextView中link的点击效果
朋友们,你们在TextView处理link的时候是不是一直被苦逼的android默认的方式困扰?每次点击link的时候,点击效果是整个textview来响应.非常烂吧?原因就不多赘述了. 那么以下这个 ...
- 使用Android注解来改善代码
昨晚看到一篇好文章.然后是英文的.所以决定翻译分享给大家.这是原文链接:http://www.michaelevans.org/blog/2015/07/14/improving-your-code- ...
- C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 C# 文件压缩加解密
C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http:// ...
- Flash文字效果
flash中增加文本.使用了消除锯齿:可读性消除锯齿.发现不嵌入字体的无法动态改动里面的文字,但嵌入字体的话会造成swf文件过大. 终于还是选择了使用设备字体,并选择了黑体.出了一个问题.文字没有加粗 ...
- thttpd源代码解析 定时器模块
thttpd源代码解析 定时器模块 thttpd是很轻量级的httpserver,可运行文件仅50kB.名称中的第一个t表示tiny, turbo, 或throttling 与lighttpd.mem ...
- windows下的txt格式转换成linux下的TXT
存在的问题是 多出一个方框或者黑格子 主要是因为bash 不能忽略windows的问题 用sed 命令来处理,分别是windows转linux,linux转windows sed -e 's/.$// ...
- difference between http get and post
1 用get的地方 在浏览器中输入url直接访问资源时,用get.get是通过url传参的. 2 用post的地方 2.1 url长度超限时 post是将参数放在http body中的,因此对参数的长 ...
- linux环境下安装的activemq的输出日志
activemq输出日志的位置: activemq/data/activemq.log 查看activemq.log文件即可.