
MiniGUI
文章平均质量分 68
MiniGUI及相关组件在的应用开发中遇到的问题
10km
这个作者很懒,什么都没留下…
展开
-
minigui 3.2.0:直接访问framebuffer的方法及示例
在做嵌入式应用程序开发时,有的场景下因为要追求图像显示效率,需要直接访问framebuffer,比如更流畅的视频显示。基于minigui框架的应用程序该如何访问framebuffer呢?最近就在为这个事儿头疼, 之前在设计时,视频输出是将一帧图像解码为BITMAP后作为窗口的背景画到屏幕上,这在PC模拟器上跑没啥问题,等到直接上开发板跑的时候,问题就来了----太慢。毕竟通过minigui这个框...原创 2018-10-30 23:19:09 · 2755 阅读 · 2 评论 -
minigui 3.2.0:通过环境变量修改minigui的运行参数
在运行环境中可以通过设置环境变量来改变MiniGUI的一些运行参数。这为应用程序部署提供了很大的便利性。但在使用3.2.0版本时,发现这些参数名全部都无效,查看MiniGUI 3.2.0的源码,才知道升级后为了环境变量命名规范化考虑,这些环境变量名全部都改名了:转为大写,并加了`MG_`前缀。原创 2018-10-27 00:54:53 · 1347 阅读 · 13 评论 -
minigui/mgncs:使用哈希表(HashTable)实现窗口局部变量(Widget Local)机制
需求说明在程序程序UI界面设计的时候,经常会遇到这样的情形,需要一个临时变量来保存一个值,这个值还会被窗口的其他消息响应函数用到,窗口销毁这个变量也就没有用了,也就是说这个变量只在窗口生命周期存在,类比线程局部变量(Thread Local)的概念,我们可以把它叫做窗口局部变量(Widget Local)。 然而不论是Windows上的MFC控件库,还是QT,还是现在我们项目中使用的Mini...原创 2018-08-14 14:46:46 · 544 阅读 · 0 评论 -
minigui:mips平台交叉编译报错error: include location "/usr/include/" is unsafe for cross-compilation
今天在对minigui做交叉编译,下面是编译的部分脚本./configure \ --host=$host \ --with-runmode=ths \ --prefix=$_prefix \ || exit -1make -j8 || exit -1如果不做交叉编译,host指定为当前机器的架构(x86_64-linux-gnu)则编译正常如果设置为mips-linux-gn...原创 2018-10-15 15:17:32 · 5238 阅读 · 2 评论 -
minigui: 基于miniStudio1.2.1创建模式对话框(DialogBox)
mGNCS(miniStudio新控件集)提供nscCreateModalDialogFromID函数用于从资源模板创建模式对话框,但是对于miniStudio生成的对话框模板,使用nscCreateModalDialogFromID函数创建模式对话框是无效的,下面是nscCreateModalDialogFromID的实例代码:int ncsCreateModalDialogFromID (...原创 2018-07-06 14:29:23 · 1967 阅读 · 1 评论 -
minigui:mGNCS简介塈设置控件(widget)enable/disable
mGNCS在 miniStudio 的开发中,为实现可视化图形界面的设计,飞漫软件在 MiniGUI 现有接口基础上,开发了一套新的控件集。miniStudio 引入的新控件集是在原 MiniGUI 控件集基础上发展而来的,为与 MiniGUI 固有控件集(Intrinsic Control Set)区别,称为“新控件集(New Control Set,简称 mGNCS)”。 基于miniS...原创 2018-06-19 13:45:14 · 1463 阅读 · 0 评论 -
minigui:获取屏幕分辨率(GetGDCapability)
MiniGUI下获取屏幕分辨率用 unsigned int GetGDCapability (HDC hdc, int iItem)// 屏幕宽度int screen_width = GetGDCapability(HDC_SCREEN,GDCAP_HPIXEL);// 屏幕高度int screen_height =GetGDCapability(HDC_SCREEN,GDCAP_VP...原创 2018-07-09 09:49:57 · 836 阅读 · 0 评论 -
minigui:基于GetTabbedTextExtentPoint 计算多行文本显示的矩形尺寸
当我们想知道一个字符串在屏幕上显示所占的区域大小,该怎么实现呢? minigui提供了GetTabbedTextExtentPoint函数用于计算一个字符串在屏幕显示的时候实际的显示区域大小.下面是GetTabbedTextExtentPoint 的函数声明(declared in minigui/gdi.h)MG_EXPORT int GUIAPI GetTabbedTextExtentP...原创 2018-07-10 13:15:14 · 863 阅读 · 1 评论 -
minigui 3.2.0:基于miniStudio应用TrueType字体的过程(2)-字体边缘锯齿,字库剪裁
CSDN好像有问题,文章中图片太多无法继续增加图片,所以文章分两个部分:上半部分地址: 《minigui 3.2.0:基于miniStudio应用TrueType字体的过程(1)》,下半部分用MarkdownPad2编辑,使用MarkdownPad2内置的图床,可能显示图片会有些慢。TrueType字体的锯齿上节我们已经成功在miniStudio中加载了TrueType字体,但是如果...原创 2018-07-19 13:53:03 · 1398 阅读 · 0 评论 -
minigui/mgncs:解决Spinbox字体设置无效问题
minigui/ncs控件集中的Spinbox控件存在一个问题,如下图,即使设置了字体,在运行时也不会应用指定的字体。通过查看libmgncs-1.2.0的源码,找到了原因,Spinbox控件中用于显示数字的子控件是SLEdit,以下是mSpinBox.c代码片段,createBody用于创建子控件,可以看到editor为一个SLEdit对象static mObject* mSpi...原创 2018-07-21 18:11:11 · 859 阅读 · 0 评论 -
minigui 3.2.0:基于miniStudio应用TrueType字体的过程(1)
学习MiniGUI上使用TrueType字体时,在网上找了好多文章,总算是搞定了。不过话说这世界变化快,minigui也在更新迭代,这些文章大都是2年前写的,看这些文章对我入门有帮助,不过也被一些过时的内容坑了不次。在这里做将我的过程做一个记录以备用。新版本 MiniGUI 3.2.0目前网上关于minigui的文章都是针对经典版本MiniGUI 3.0.12的,如果你现在访问Mini...原创 2018-07-19 10:55:42 · 2330 阅读 · 0 评论 -
minigui/mgncs 1.2.0:解决miniStudio生成的渲染器(renderer)设置文本颜色无效问题
最在用miniStudio设计UI,我的minigui升级到了3.2.0,libmgncs版本是1.2.0,但在使用渲染器设置文字颜色时出了问题。 如下,我只是想做一个黑底白字的效果,所以用渲染器指定了字体颜色为白色,背景为黑色。 然而,程序实际运行的时候却是这样的,说好的白色呢?遇到这个问题我瞬间就懵了,前几天还好好的呀。怎么会这样?退回来仔细想想,前几天我用的是apt-ge...原创 2018-07-22 17:41:46 · 985 阅读 · 0 评论 -
minigui/mgncs:数据绑定(databinding)的应用
所谓数据绑定(databinding)是面向对象程序设计言(OOP)的一种系统设计方法,一些高级语言(比如java)开发框架(比如jface)就提供了数据绑定功能。就是在不同的对象之间建立事件(event)驱动的一种关联,当一个对象的数据发生变化时另一个对象的数据同步发生变量而不需要人为设计和干预,具体到应用层开发,有了数据绑定功能就可以让UI界面中用户操作带来的数值变化自动同步到应用数据对象中,...原创 2018-08-08 15:40:16 · 553 阅读 · 0 评论 -
minigui/mgncs:利用LoadBitmapFromMem函数对摄像头MJPEG格式图像解码
可能与虚拟机有关,在virtualbox虚拟机环境下,即使VIDIOC_S_FMT设置了pixelformat为RGB或YUV,通过v4l2视频驱动框架读取摄像头帧图像的格式总是MJPG。 MJPG是什么格式?以下说明摘自百度百科: MJPEG全名为 “Motion Joint Photographic Experts Group”,是一种视频编码格式,中文名称翻译为“技术即运动静止图像...原创 2018-08-29 00:35:09 · 1893 阅读 · 2 评论 -
minigui:增加__mg_save_jpg保存JPEG格式图像
minigui 库中有SaveBitmapToFile和SaveMyBitmapToFile可以将一个(BITMAP或MYBITMAP)图像对象存储为文件。然而图像格式只支持bmp(libminigui-3.2.0)。 但嵌入式平台上存储空间有限,我确实需要存储为JPEG啊。 怎么办?自己撸一个。 JPEG压缩的流程都是固定的,网上有很多代码,JPEG自己也有例子,这不难,复杂的地方是将一个...原创 2018-09-04 17:29:07 · 973 阅读 · 0 评论 -
minigui/mgncs:自定义渲染器(renderer)实现透明背景按钮(transparent button)
一般来说,对于mStatic,mImage这样的控件,只要设置了透明属性(transparent=true),就可以实现背景透明,但对于mButton按钮却不行,即使设置了透明属性,也不能实现透明背景。miniStudio中对按钮设置透明属性示例: 这是为什么呢?通过跟踪minigui/mgncs的代码发现了原因: 以下是libmgncs-1.2.0/src/renderer/flat...原创 2018-08-30 14:47:36 · 2065 阅读 · 12 评论 -
minigui:静态编译连接mgncs库时遇到的xml2的问题
最近做一个基于minigui/mgncs的项目,在开发阶段因为是在ubuntu下基于minigui的模拟器开发,所以编译时都是标准的动态库连接。没啥问题,很顺序。现在项目功能开发告一段落,要向嵌入式平台移植了,就要把编译改为全静态连接(--static)。问题就来了。编译正常,连接时报了如下一大堆错误:/usr/lib/x86_64-linux-gnu/libxml2.a(nanohttp....原创 2018-10-14 15:33:09 · 1622 阅读 · 0 评论 -
minigui:mgplus交叉编译警告 include location "/usr/include/freetype2" is unsafe for cross-compilation
今天在交叉编译mingui的mgplus组件库时输出了一个警告:mips-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -D__MGPLUS_LIB__ -I.. -I../agg -I../../include -I../agg/font_freetype -ffunction-sections -fdata-sections -I/home/gyd/...原创 2018-10-16 15:08:02 · 3098 阅读 · 0 评论 -
minigui 3.2.0:对mgncs剪裁遇到的问题error: The pkg-config script could not be found or is too old.
考虑到嵌入式平台的存储和运行空间都有限,在向目标平台移植时肯定要对minigui及其组件进行剪裁,删除掉不需要的功能和特性,以缩小程序体积,对mgncs做剪裁时遇到了一个非常奇怪的问题,虽然解决了,但现在也没找到根本原因:根据configure --help的提示使用--enable-fashionrdr=no禁用fashion 渲染器(fashion render) 时报错了.错误信息(片段...原创 2018-10-25 13:59:26 · 7136 阅读 · 0 评论 -
minigui:解决gvfb编译报错undefined reference to symbol 'XkbGetIndicatorState'
minigui在linux PC平台创建开发环境时,需要Virtual Frame Buffer 支持(gvfb,qvfb),minigui官网提供了这两个程序的源码,需要自己下载编译并安装到自己的PC上。我用的是gvfb,minigui下载地址:http://www.minigui.org/downloads/gvfb-1.0.0.tar.gz编译安装过程不复杂:编译需要cmake支持,如果没有请安装:sud...原创 2018-10-25 15:16:45 · 1702 阅读 · 2 评论 -
minigui:自定义字体文件的安装位置(install location for custom font)
我们的基于minigui的嵌入式系统项目中使用了True Type字体,原以以为只要把字体文件放在当前路径下的字体文件夹下就可以了res/font,但实际运行时报错了:NEWGAL>PCXVFB: /usr/local/bin/gvfb 12695 miniStudio Emulator 240x320-16bpp.rgb565 FONT>FT2: another error co...原创 2018-10-25 16:27:25 · 1010 阅读 · 0 评论 -
minigui/mgncs:双缓冲区实现窗口推拉特效
minigui框架提供了窗口双缓冲区机制,利用这个机制可以实现窗口显示特效。不是所有的窗口都可以利用双缓冲区实现显示特效,窗口必须具备WS_EX_AUTOSECONDARYDC扩展窗口风格。所以下面的函数中首先就是判断窗口是否有WS_EX_AUTOSECONDARYDC扩展窗口风格。使用miniStudio设计UI时要将SecondaryDC属性置为true,就设置了窗口的WS_EX_AUTOS...原创 2018-12-11 11:58:16 · 1728 阅读 · 0 评论 -
minigui/mgncs 1.20 ncsCreateModalDialogFromID函数的隐患
mgncs(1.2.0) 的ncsCreateModalDialogFromID函数存在一个隐患,原代码很简单,如下:int ncsCreateModalDialogFromID (HPACKAGE package, Uint32 dlgId, HWND owner, HICON hIcon, HMENU hMenu, ...原创 2018-12-24 10:54:51 · 534 阅读 · 1 评论