MiniGUI 常见问题
控件问题
目前支持的控件类型有哪些
MiniGUI 核心库中提供了二十多种内置控件(详情可见Datasheet for MiniGUI 3.2 (PDF))。 从 MiniGUI 3.0 版本开始,我们推荐开发者使用 mGNCS 组件中提供的控件,这些控件有:
- Static Control
- Button Control
- List Box Control
- Edit Box Control
- Combo Box Control
- Menu Button Control
- Progress Bar Control
- Track Bar Control
- Toolbar Control
- Property Sheet Control
- Scroll Window Control
- Scroll View Control
- Tree View Control
- List View Control
- Month Calendar Control
- Spin Box Control
- Cool Bar Control
- Animation Control
- GridView Control
- IconView Control
- Scrollbar Control
有关 mGNCS 控件的使用示例,可见 mg-samples 示例程序包,或者如下链接:
https://github.com/VincentWei/mg-samples/tree/master/mgncs
在 mGNCS4Touch 组件中,我们提供了适合触摸屏操作的若干控件(这些控件常见于智能手机), 主要有:
- 按钮导航栏
- 图片导航栏
- 日期、时间滚轮选择器
- 封面流
- 条目栏
- 跟踪条
- 动画开关
有关 mGNCS4Touch 控件的使用示例,请访问:
https://github.com/VincentWei/mgncs4touch/tree/master/samples
综合演示程序,见 mguxdemo:
https://github.com/VincentWei/cell-phone-ux-demo
是否支持双击事件
支持。请在窗口过程中处理 MSG_LBUTTONDBLCLK
或 MSG_RBUTTONDBLCLK
消息。
前者为鼠标左键的双击事件,后者为鼠标右键的双击事件。通常,用户在触摸屏上的
快速连续按击会被处理为 MSG_LBUTTONDBLCLK
消息。
是否支持移动事件,指针滑动触发,用于拖动、划屏等操作
支持,处理 MSG_MOUSEMOVE
相关消息即可。用户在触摸屏上的滑动,通常也会被处理为该消息。
是否支持聚焦、失焦事件,用于判断选中。
支持。请分别处理 MSG_SETFOCUS
和 MSG_KILLFOCUS
消息。
是否区分按下状态、弹起状态、使能状态、失能状态等并且分别配置效果
支持。通过使用不同的外观渲染其,或者自定义外观渲染器可定制按钮等控件的这些外观和效果。
可参阅如下示例程序:
是否支持渐变色填充FillBox
MiniGUI 核心库提供的 FillBox 不支持渐变色的填充,需要使用 mGPlus 矢量图形组件提供的 相关功能。mGPlus 是对 MiniGUI 核心库绘制功能的一个补充,其中包含了常见的 2D 矢量绘图 功能,包括路径、渐变色填充、颜色组合等。
具体示例代码,请访问:
是否支持动态的图标
可使用 mGNCS 提供的动画控件,相关示例见 mg-demos 中的 cbplusui:
https://github.com/VincentWei/mg-demos/tree/master/cbplusui
没有滑轮控件,只能通过加减的方式来实现
请使用 mGNCS4Touch 中提供的滚轮控件。
ListView控件中,不能加载图片
建议使用 mGNCS 中的 ListView 控件,该控件的条目内容可以非常灵活地调整。 比如 WiFi 选择列表,在 mg-demos 中就有相关的实现。
https://github.com/VincentWei/mg-demos/tree/master/cbplusui
ListView控件,选中的行数是什么函数?有没有相关控件的获取控件行列信息的文档说明?
若使用 MiniGUI 核心库提供的 ListView 控件,请发送消息LVM_GETSELECTEDITEM
获取当前选择的行。
有关 ListView 控件的文档,请阅读:
http://wiki.minigui.com/twiki/bin/view/Products/MiniGUIPGV32Part6Chapter14
MessageBox怎么改字体和文字大小?
MessageBox
使用的字体是默认控件字体,可通过修改 MiniGUI.cfg 配置文件中的
systemfont
段设置来修改系统字体的大小。
MiniGUI 核心库提供的消息框是 PC 风格的,建议根据应用场景自定义消息框, 可参考 mg-demos 中的相关示例:
https://github.com/VincentWei/mg-demos/tree/master/cbplusui
在 miniStudio 中设置了MENUBUTTON的字体,但是下拉框文字是乱码
一般是字符集设置错误引起,建议字体的字符集为 UTF8;另外要检查 MiniGUI.cfg 文件 中设定的菜单字体(systemfont.menu)对应的字符集。
另外需要说明的是,miniStudio 的设计还有很多不完善的地方;目前我们建议 主要将 miniStudio 用于原型设计,不建议在正式项目中使用。
显示问题
2.1 长字符串的显示
- 需要自己开发,mgutils有个示例:mywins
2.2 动态调节显示比例
- 这个需要应用自己处理,比如可以根据不同分辨率定义控件配置数据,在不同分辨率下使用不同的配置
2.3 鼠标如何配置显示或隐藏
- 使用函数: ShowCursor
2.4 如何在未连接任何显示设备的情况下,启动MINIGUI
- 修改MiniGUI.cfg文件,选择使用dummy设备。
2.5 两个显示设备(分辨率不一致),如何做动态的切换方案
- 这个需要应用自己处理,比如可以根据不同分辨率定义控件配置数据,在不同分辨率下使用不同的配置
2.6 主界面画的圆弧边缘有锯齿(如图所示)
- 使用mgplus绘制,如果有性能问题换成png带alpha通道的图片
3 输入设备
3.1 能否直接支持游戏手柄
- 7月份发布MiniGUI 4.0 支持
3.2 多输入设备的支持
- 7月份发布MiniGUI 4.0 支持
3.3 如何在应用层支持多点触控
- 7月份发布MiniGUI 4.0 支持
4 系统功能
4.1 是否支持系统按键音
- 与MiniGUI无关,可以在收到按键事件时自己播放;
4.2 蓝牙、WiFi功能的对接
- ./mg-demos/cbplusui 有界面示例,具体功能需要自己对接
4.3 丰富字库的支持,包括多国语言的配置及裁剪
- 支持多种字库及编码 现在多语言支持用的Unicode。MiniGUI 4.0 支持完整Unicode 12.0规范。字体推荐truetype字体, 如果truetype字体太大,MiniGUI自带有转换工具可以转换为点阵字体,但是要注意字体版权问题。
4.4 是否支持文档阅读器,包括常见的PDF、DOC、TXT
- txt可直接加载,doc, pdf等可以找第三方提供支持,比如红樱枫等
4.5 进程间通信有没有标准
- 依赖于操作系统平台,如Linux可以使用linux进程通讯相关函数;
4.6 是否支持直接应用截图保存
- 支持,调用指定函数,把显示保存到位图中;
4.7 支持中英文输入法
- 支持,建议参考示例mg-demos/softkbd,可以直接用(里面的码表比较老, 字比较少)。 如果想要更好的质量,可以去找一些商业机构或者自己移植一些开源的比如小企鹅输入法。
5. 页面刷新
5.1 刷新非当前页面的方法
- 将目标窗口的句柄作为参数调用 InvalidateRect
5.2 页面存在较多按钮控件时 刷新页面时会有短暂白屏?
- 所在窗口背景绘制过于耗时或按钮本身绘制过于耗时会出现白屏现象。在MiniGUI 3.0 可以打开 WS_EX_AUTOSECONDARYDC (双缓冲) 可以解决白屏闪烁问题,但是会比较耗内存或者编程时注意只刷新必要的区域。
5.3 主界面刷新的时候,有时候有闪烁状态
- 所在窗口背景绘制过于耗时或按钮本身绘制过于耗时会出现白屏现象。在MiniGUI 3.0 可以打开 WS_EX_AUTOSECONDARYDC (双缓冲) 可以解决白屏闪烁问题,但是会比较耗内存或者编程时注意只刷新必要的区域。
6. 文档
6.1 希望有中文文档
- 以前有中英文两种版本,后来考虑工作量问题,就只维护了英文文档; 为什么选英文?因为现有的翻译工具(比如Google)能将英文文档比较准确的翻译成中文文档,反之则不然,所以最终我们选择维护英文文档。
7. 其它
欢迎致信 sales@minigui.com 购买我们的VIP支持服务,解决您在开发 MiniGUI 应用过程中的所有疑难问题。