Files
minigui-docs/programming-guide-zh/MiniGUIProgGuidePart2Chapter01-zh.md
lisimeng123 ca3f5c0633 update
2022-11-18 09:22:56 +08:00

49 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# mGNCS 简介
## 1 新控件集介绍
在 mStudio 的开发中,为实现可视化图形界面的设计,飞漫软件在 MiniGUI 现有接口基础上开发了一套新的控件集。mStudio 引入的新控件集是在原 MiniGUI 控件集基础上发展而来的,为与 MiniGUI 固有控件集Intrinsic Control Set区别称为“新控件集New Control Set简称 mGNCS”。
新控件集的特点如下:
- 采用面向对象编程思想,重新整理了控件之间的继承关系,用 C 语言实现了类似 C++ 类概念,对外提供 C 语言接口。这点上mStudio 引入的新控件集和 Gtk+ 的控件集类似。
- 对控件的接口和风格做了规范,使所有控件都能用统一的接口访问。
- 在 MiniGUI 3.0 外观渲染器的基础上,进一步扩展了外观渲染器的概念,新控件集中的每个控件都具有自己的外观渲染器,并按照控件的继承规则定义每个控件专有的渲染器接口,使其能够随着控件的变化而变化。
- 通过开发新控件集,我们同时解决了 MiniGUI 固有控件集在如下几个方面的不足:
- 接口不统一,不规范;
- 通过消息操作控件,代码维护困难,易于出错;
- 固有控件的层次关系不明,重复代码较多,且不方便定制和扩展控件功能;
- 固有控件的绘制效率较低,在开发板上运行时闪烁现象比较严重。
在新控件集中,存在如下几种类:
- 控件类。这种类用于表示各种控件(如主窗口、静态框、按钮、列表框等),也就是 MiniGUI 应用程序中具有可视化特征的类。需要注意的是mGNCS 中所说的“控件”,其概念比 MiniGUI 所述“控件”有更广泛的外延,同时包括了主窗口等对象,而 MiniGUI 所指的控件,仅用于子窗口。在 mGNCS 中,所有控件类都派生自 mWidget 类。
- 非控件类。这种类,用于维护类层次结构以及控件所使用的数据等,包括如下几种:
- 超类,它是 mGNCS 类层次结构中的最基础类,所有其他类由这个类派生而来,即 mObject 类。
- 一般性类,这种类用来实现数据源、数据绑定等机制,也用来维护控件所使用的数据,如 mItem 类。
- 不可见组件类,这种类用来表示界面中所使用的定时器等不可见的组件,和控件类(相当于可见组件类)一起,被统称为组件类。
一个控件由以下几个部分组成:
- 对象和类mGNCS 使用一个对象结构体和类结构体来表示一个类。其中类结构体主要定义了一组函数指针,来模拟 C++ 类的虚函数表,以实现继承和多态能力。对象结构体则定义了一个类实例相关的数据结构。
- 控件类名:由一个唯一的字符串来标识一个控件类,对应的 C 语言宏使用 NCSCTRL_ 作为前缀。
- 控件风格:同 MiniGUI 固有控件集的风格概念。风格在新控件集中只被用于那些能够在控件初始化时确定,在控件的整个生命周期都不会变化的属性中使用。
- 控件属性:新控件集将控件可以通过 get/set 方法控制的特性提取出来,并为每一项设置一个整数标识符,通过类结构体的 setProperty 和 getProperty 方法来访问和控制一个控件的行为和状态。
- 控件事件:合并了 MiniGUI 中消息和通知码的概念,通过设置一个特定事件的回调函数,可以用来响应控件的事件。
- 外观渲染器:在 mGNCS 中,每个控件的绘制都由专门的外观渲染器实现。新控件集默认提供了 classic经典、fashion流行、skin皮肤、flat平板四种外观渲染器。控件可以选择任意一种有效的渲染器通过为该渲染器设置特定的属性如颜色、尺寸等来调整控件的外观。为了方便描述本指南中所述外观渲染器均简称为渲染器renderer为了和控件自身的渲染器相区别MiniGUI 3.0 定义的渲染器被称为“全局渲染器global renderer将新控件集引入的渲染器称为“控件渲染器control renderer”。这两类渲染器的作用有如下不同
- 全局渲染器作用于主窗口、MiniGUI 固有控件集以及新控件集的系统组件(如边框、标题栏、滚动条等非客户区元素)。
- 控件渲染器仅作用于新控件集各个控件的客户区绘制。
另外,新控件集定义的不可见组件拥有和控件类似的接口,目前实现了定时器,在以后版本中计划实现的组件有特效切换组件、程序逻辑控制组件等等。
新控件集主要配合 mStudio 使用,也可以作为 MiniGUI 3.0 的一个组件而直接使用,且可以和固有控件集中的控件混合使用。
## 2 本指南的内容组织
本指南被划分为如下附录:
- 第一部分:介绍 mGNCS 的基本概念及体系结构。
- 第二部分:面向应用开发者,讲述如何使用 mGNCS 开发应用程序,并详细描述主要的 API 接口。
- 第三部分:面向新控件集开发者,讲述如何给予 mGNCS 开发新的控件、渲染器等。
- 附录:本文档的编写规范以及其他快速参考式的内容等。