ucgui 软件 ucgui - 电脑 - 【龙岩电脑网】_龙岩电脑维修_龙岩笔记本电脑维修_监控安装_市区上门维修
公司动态

ucgui 软件 ucgui

摘要:ucgui怎样实现字库与程序空间分离 1、ucgui作为一个强大的GUI系统,现在嵌入式设备的开发上应用的越来越多了,现在对于在这套系统上的中文支持,控件功能扩展等方面的资料也很多,有兴趣的朋友可以到...

发布日期:2021-01-03

ucgui  软件

ucgui怎样实现字库与程序空间分离

1、ucgui作为一个强大的GUI系统,现在嵌入式设备的开发上应用的越来越多了,现在对于在这套系统上的中文支持,控件功能扩展等方面的资料也很多,有兴趣的朋友可以到论坛里转悠一下,收获一定不少的。

在Arm上利用这套GUI系统工作的时间也短了,现在也给大家说说自己的一些应用吧。

大家都知道,程序与数据分离开对于开发还是维护都很有必要的,反正本人就很讨厌为download一个程序花上几分钟或上10分钟的时间的。

ucgui提供一个字库的生成叫字体转换器软件,能方便的把window上的字库转换为满足ucgui要求的c文件(当然俺可不保证可随便盗版用MS的字体哦)。

2、生成的c文件格式大概为下面的形式GUI_CONST_STORAGE U8 acFontHZ16x16_0020[] ={________,________,...};......GUI_FLASH const GUI_CHARINFO GUI_FontHZ16x16_CharInfo[] ={{ 9, 9, 2, (void GUI_FLASH *)&acFontHZ16x16_0020 },...};......GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_a1 ={0xa1a1,0xa1fe,&GUI_FontHZ16x16_CharInfo[96],(void *)&GUI_FontHZ16x16_Prop_a2};GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_ASC ={0x0020, // first character0x007f, // last character&GUI_FontHZ16x16_C...1、ucgui作为一个强大的GUI系统,现在嵌入式设备的开发上应用的越来越多了,现在对于在这套系统上的中文支持,控件功能扩展等方面的资料也很多,有兴趣的朋友可以到论坛里转悠一下,收获一定不少的。

在Arm上利用这套GUI系统工作的时间也短了,现在也给大家说说自己的一些应用吧。

大家都知道,程序与数据分离开对于开发还是维护都很有必要的,反正本人就很讨厌为download一个程序花上几分钟或上10分钟的时间的。

ucgui提供一个字库的生成叫字体转换器软件,能方便的把window上的字库转换为满足ucgui要求的c文件(当然俺可不保证可随便盗版用MS的字体哦)。

2、生成的c文件格式大概为下面的形式GUI_CONST_STORAGE U8 acFontHZ16x16_0020[] ={________,________,...};......GUI_FLASH const GUI_CHARINFO GUI_FontHZ16x16_CharInfo[] ={{ 9, 9, 2, (void GUI_FLASH *)&acFontHZ16x16_0020 },...};......GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_a1 ={0xa1a1,0xa1fe,&GUI_FontHZ16x16_CharInfo[96],(void *)&GUI_FontHZ16x16_Prop_a2};GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_ASC ={0x0020, // first character0x007f, // last character&GUI_FontHZ16x16_CharInfo[0], // address of first character(void *)&GUI_FontHZ16x16_Prop_a1 // pointer to next GUI_FONT_PROP};GUI_CONST_STORAGE GUI_FONT GUI_FontHZ16x16 ={GUI_FONTTYPE_PROP_SJIS, // type of font16, // height of font16, // space of font y1, // magnification x1, // magnification y(void GUI_FLASH *)&GUI_FontHZ16x16_Prop_ASC};3、如果想大改动的去修改Edit或Text控件关于显示字模的代码的话,本人觉得会有些难度并且没这个必要其实我们在调用ucgui显示的时候需要指定到底用哪个字库显示GUI_SetFont(&GUI_FontHZ16x16);在这里我们主要修改的就是GUI_FontHZ16x16改为一个非const类型变量,而把GUI_FONT结构(void GUI_FLASH *)指向的所有内容变成二进制文件都放在固定的数据地址就可以了,接着怎样把固定的那部分内容生成一个二进制文件呢?打开你的ADS,把GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_ASC以上所有的数组变成const类型存放为一个.c文件const GUI_FONT g_ResourceAddress = {&GUI_FontHZ16x16_Prop_ASC,};GUI_FONT * dbc_WindowsListAddr(void){return (GUI_FONT *)&g_ResourceAddress;}当然你还要设置一下Simple image的开始位置偏移地址.最后就是在程序中要把GUI_FontHZ16x16的GUI_FLASH *的指向到固定的flash位置就可以咯...

UCGUI如何设置菜单系统

UCGUI多级菜单设计1 建立UCGUI主菜单 1.1 利用建立窗口函数来建立主菜单界面 用户通过利用UCGUI中WM_CreateWindow函数建立一个指定大小的窗口。

窗口对话框建立函数 GUI_CreateDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget, int NumWidgets, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0) paWidge,对话框信息结构体,包含了对话框所有的信息,对话框中的各个部件都在该信息结构体中被设置好。

NumWidgets,对话框中所有部件的个数。

cb,窗口回调函数。

hParent,窗口父窗口的句柄。

x0,y0,窗口建立时起始位置。

扩展型窗口对话框建立函数: GUI_ExecDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget,int NumWidgets, WM_CALLBACK* WM_HWIN hParent, int x0, int y0) paWidget,窗口信息。

NumWidgets,窗口部件数目。

cb,,窗口回调函数。

hParent,父窗口句柄。

x0,y0,窗口建立时起始位置。

1.2 回调函数 一般来说,每一个窗口的建立都会附带有一个属于该窗口的回调函数,利用回调函数来实时更新窗口的内容。

UCGUI中为窗口和窗口对象(控件)提供的回调机制实质上是一个事件驱动系统。

正如在大多数视窗系统中一样,原则是控制流程不只是从用户程序到图形系统(用户程序调用图形系统函数来更新窗口),而且可以从用户程序到图形系统,同时也可以从图形系统回到用户程序,意思是图形系统也可以调用用户程序提供的回调函数来达到更新窗口的目的。

这种机制常常表现好莱坞法则的特点(“不要打电话给我们,我们会打电话给你”)---主要是视窗管理器为了启动窗口重绘的需要。

与传统程序比较有差异,但它使对视窗管理器的无效逻辑开发成为可能。

回调函数的执行行为依赖于它收到的消息类型。

上面的函数原型通常带有一个开关声明,用于定义了对于不同的使用一个或者更多的事件声明的消息所采用的不同的处理方式(典型的至少有对WM_PAINT()的处理)。

回调函数需要获得的信息包括有:目标窗口、目标窗口的消息、源窗口、源窗口下部件的ID等信息。

回调函数中可以通过获取目标窗口,然后在获取目标窗口下的各个部件的ID,这时可以根据窗口的消息类型来初始化各个部件,如消息是WM_INIT_DIALOG时,可以直接对窗口进行初始化设置,例如设置按钮按下之后的背景色、设置窗口的字体大小等。

如果要使用回调函数实时更新各个窗口,必须要运行GUI_Exec()或WM_Exec函数。

1.3 常用窗口初始化函数解析 窗口初始化方式有两种,一种是在新建窗口时初始化,第二种则是利用回调函数初始化窗口。

使用在新建窗口时初始化的方法与回调函数中初始化窗口差不多,在新建窗口时给窗口一个指定的句柄,在利用常用的窗口初始化函数对窗口句柄进行初始化即可。

在回调函数中对窗口初始化应该注意,进入回调函数就立即获取窗口句柄,同时必须要用缓存保存从窗口中获取的各个部件的ID。

获取窗口部件函数如下: WM_HWIN _GetDialogItem(WM_HWIN hWin, int Id)函数从窗口中获取各个部件的ID。

hWin,为部件所在窗体的源窗口句柄,Id为建立控件时为控件设置的ID。

在窗体回调函数中必须要注意WM_HWIN _GetDialogItem函数调用的位置,在WN_INIT_DIALOG前调用还是在其后调用所得到的结果不同。

通过调整该函数在回调函数中所在的位置来确定程序能否正常运行。

对于窗口名的设置用FRAMEWIN的相关函数。

常用的函数原型如下有: 设置窗口标题的字体大小函数: FRAMEWIN_SetFont(FRAMEWIN_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont)。

FRAMEWIN_Handle,为所建立的窗口的句柄,不需要调用窗口部件获取函数去获取其部件ID,只需要在进入回调函数时调用获取源窗口句柄函数(pMsg->hWin)即可实现。

* pFont为窗口标题的字体,一般用GUI.H中UCGUI自带的字体即可,用户也可自定义GUI支持的字体,GUI自带的字体只支持英文的,不支持中文字体,如果需要显示中文字体,用户要用GUI字库生成软件生成,在添加进工程才行。

设置窗口标题字体显示的对齐方式函数: FRAMEWIN_SetTextAlign(FRAMEWIN_Handle hObj, int Align) hObj为源窗口句柄,Align为窗体标题显示对齐方式,其取值一般有:左对齐,右对齐,居中等,这些参数在GUI.H函数中已经被定义为宏,用户根据需要直接使用即可。

设置窗口标题的显示颜色: FRAMEWIN_SetTextColor (FRAMEWIN_Handle hObj, GUI_COLOR Color); hObj为源窗口句柄,Color为标题颜色,参数在GUI.H中被定义为宏。

设置窗口标题栏高度: FRAMEWIN_SetTitleHeight (FRAMEWIN_Handle hObj, int Height); hObj为窗口句柄,Height为标题栏高度 为窗口中添加关闭窗口按钮: FRAMEWIN_AddCloseButton(FRAMEWIN_Handle hObj, int Flags, int Off)。

hObj为要添加按钮的窗口句柄。

Flags为添加的按钮的显示方式,基本参数为FRAMEWIN_BUTTON_RIGHT或FRAMEWIN_BUTTON_LEFT,即将该关闭窗口按钮显示在窗口的最左端或是最右端。

为窗口添加最大化显示按钮: FRAMEWIN_AddMaxButton(FRAMEWIN_Handl...

请问用ucgui怎么实现在触摸屏某个界面上按下一个按键 然后屏幕跳转...

按照你题目的意思,很简单,你可以通过一个按钮的按下或弹出的状态来触发。

方法实现:1.如果在主桌面创建的,依旧还想在主桌面上绘制。

那么就把桌面的控件隐藏起来。

然后重新创建。

2.可以创建个框架,3.可以创建个窗口。

框架和窗口上都可以创建控件。