MiniGUI 3.0 编程指南
MiniGUI 编 程 指 南
版本 3.0 修订号 4
适用于 MiniGUI Ver 3.0.x
北京飞漫软件技术有限公司
2010 年 1 月
Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南
MiniGUI
编程指南(V3.0)
•
•
•
简介
版权声明
第 01 章:前言
• 第 1 篇:MiniGUI 编程基础
o
o
o
o
o
o
o
o
o
o
o
第 02 章:开始 MiniGUI 编程
第 03 章:窗口和消息
第 04 章:对话框编程基础
第 05 章:控件编程基础
第 06 章:控件高级编程
第 07 章:菜单
第 08 章:滚动条
第 09 章:键盘和鼠标
第 10 章:图标、光标和插入符
第 11 章:界面外观及特效
第 12 章:其他编程主题
• 第 2 篇:MiniGUI 图形编程
o
o
o
第 13 章:图形设备接口
第 14 章:文本的处理和显示
第 15 章:高级图形函数
• 第 3 篇:MiniGUI 高级编程
o
o
o
第 16 章:进程间通讯及异步事件处理
第 17 章:开发定制的 MiniGUI-Processes 服务器程序
第 18 章:图形引擎及输入引擎
• 第 4 篇:MiniGUI 控件编程
o
o
o
o
o
o
o
o
o
第 19 章:静态框
第 20 章:按钮
第 21 章:列表框
第 22 章:编辑框
第 23 章:组合框
第 24 章:菜单按钮
第 25 章:进度条
第 26 章:滑块
第 27 章:工具栏
Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南
o
o
o
o
o
o
o
o
o
o
o
o
第 28 章:属性表
第 29 章:滚动窗口控件
第 30 章:滚动型控件
第 31 章:树型控件
第 32 章:列表型控件
第 33 章:月历控件
第 34 章:旋钮控件
第 35 章:酷工具栏
第 36 章:动画控件
第 37 章:网格控件
第 38 章:图标型控件
第 39 章:独立滚动条控件
•
附录A:统一的 MiniGUI 初始化接口
Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南
简介
由北京飞漫软件技术有限公司开发的 MiniGUI(http://www.minigui.com),是国内为数不多的几大国际知名自由软件之一。其
目标是为实时嵌入式操作系统建立一个跨操作系统的、快速、稳定和轻量级的窗口系统及图形用户界面支持系统。我们
将 MiniGUI 定义为“针对嵌入式设备的、跨操作系统的图形界面支持系统”,属于一种“嵌入式图形中间件”软件产品。目前,
MiniGUI 已成为跨操作系统的图形用户界面支持系统,可在 Linux/uClinux、eCos、VxWorks、pSOS、ThreadX、Nucleus、uC/OS-II、
OSE 等操作系统,以及 Win32 平台上运行。
目前,MiniGUI 可免费下载的最新开源版本(遵循 GPL 条款)是 MiniGUI GPL V1.6.10。你可以从 http://www.minigui.org 下载
上述 GPL 版本的源代码、开发文档及示例程序。需要注意的是:免费下载的 MiniGUI 只能用于开发 GPL 或其它公开源码的
应用软件,如果你要利用 MiniGUI 开发专有或商业软件,则必须从北京飞漫软件技术有限公司购买商业授权。飞漫软件将为
购买 MiniGUI 商业授权的用户提供最新的 MiniGUI 3.0 标准版或专业版(或企业版)产品,并提供相关的移植及开发技术支持
服务。
本指南详细讲述了利用 MiniGUI 3.0.x 开发嵌入式应用软件的基础知识、技术资料和开发技巧,内容涉及到 MiniGUI 3.0.x 编程
的各个方面,包括消息循环和窗口过程、对话框和控件、图形接口等。有关 MiniGUI 3.0.x 应用编程接口的详细描述,可访问:
http://www.minigui.com/api_ref/3.0.x_processes/index.html - 多进程运行模式(请根据实际版本来确定 x 的取值,如版本为 3.0.6,
则 x 为 6)
http://www.minigui.com/api_ref/3.0.x_threads/index.html - 多线程运行模式
Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南
版权声明
《MiniGUI 编程指南》版本 3.0,适用于 MiniGUI Version 3.0.x。
版权所有 (C) 2003~2010,北京飞漫软件技术有限公司,保留所有权利。
无论您以何种方式获得该手册的全部或部分文字或图片资料,无论是普通印刷品还是电子文档,北京飞漫软件技术有限公司
仅仅授权您阅读的权利,任何形式的格式转换、再次发布、传播以及复制其内容的全部或部分,或将其中的文字和图片未经
书面许可而用于商业目的,均被视为侵权行为,并可能导致严重的民事或刑事处罚。
Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南
1 前言
•
•
•
•
•
1.1 相关的文档
1.2 本指南的组织
1.3 获得本指南中的例子
1.4 示例程序的编译及运行环境
1.5 版权和许可条款
MiniGUI 是一个跨操作系统的、面向嵌入式系统的轻量级图形用户界面支持系统。MiniGUI 项目自 1998 年底开始到现在,已
历经十多年的开发过程,目前已非常成熟和稳定,并且在许多实际产品或项目中得到了广泛的应用。目前,MiniGUI 的最新
版本是 3.0。本指南是 MiniGUI 3.0 的编程指南,描述如何在 MiniGUI 之上编写应用程序。
本指南是一本关于 MiniGUI 3.0 编程的完整指南,讲述了使用 MiniGUI 3.0 编程的基础知识、编程方法及技巧,并详细地描述
了主要的应用程序编程接口函数。虽然本指南试图尽可能详尽地描述 MiniGUI 编程的各个方面,但它不是一本关于 MiniGUI API
的完整参考手册,该方面的信息请参考《MiniGUI API Reference Manual》。
1.1 相关的文档
和本编程指南相关的文档有:
• 技术白皮书 - 描述 MiniGUI V3.0 的功能特性。
• 特性表 - MiniGUI V3.0 功能特性的具体描述。
• MiniGUI 3.0 API 参考手册(多进程模式) - MiniGUI V3.0 多进程运行模式的 API 详细描述。
• MiniGUI 3.0 API 参考手册(多线程模式) - MiniGUI V3.0 多线程运行模式 API 详细描述。
• 发布说明(Release Notes) - 有关 MiniGUI V3.0 和先前版本的主要区别及兼容性说明文档。该文件详细描述了新版
本中的新增功能、增强或者优化等等;请特别注意可能引起兼容性问题的增强或缺陷修正。
请访问 http://www.minigui.com/index.phpid=techproducts 获得飞漫软件其他产品的信息以及购买信息。
1.2 本指南的组织
除本前言外,本指南共分四篇共三十八章:
• 第 1 篇:MiniGUI 编程基础,第 2 章到第 12 章。讲述使用 MiniGUI 编程的基本概念。
• 第 2 篇:MiniGUI 图形编程,第 13 章到第 15 章。讲述 MiniGUI 图形相关接口的使用及概念。
• 第 3 篇:MiniGUI 高级编程主题,第 16 章到第 18 章。讲述 MiniGUI-Processes 相关的高级编程概念及定制图形引
擎和输入引擎的开发。
• 第 4 篇:MiniGUI 控件编程,第 19 章到第 38 章。讲述 MiniGUI 提供的各种控件的使用方法。
Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南
1.3 获得本指南中的例子
本指南中的示例程序 mg-samples 软件包(MiniGUI 示例程序包)。我们将这些示例程序组织成了完整的 Autoconf/Automake
项目,并以 mg-samples 软件包的形式保存在产品光盘中。对 MiniGUI 3.0 产品(标准版、专业版或企业版),示例程序的代
码包保存在产品光盘的 minigui/ 目录中,相关文件如下所列:
• mg-samples-3.0.x-tar.gz:《MiniGUI 编程指南》的配套示例程序。
• minigui-res-3.0.x.tar.gz:MiniGUI 3.0 所使用的资源,包括基本字体、图标、位图和鼠标光标。
•
adp/:对 MiniGUI 3.0 标准版和专业版产品,该目录中保存有针对特定开发板(操作系统、硬件平台)的 MiniGUI 3.0
开发包。
1.4 示例程序的编译及运行环境
本指南假定用户使用的是针对 Linux 操作系统的 MiniGUI 3.0 标准版或专业版产品,因此,某些例子是以用户使用 Linux 操
作系统以及 GNU 开发环境为背景讲述的。但是,本指南中的绝大部分概念同时适用于其他操作系统。关于如何在其他操作
系统上安装、编译并运行 MiniGUI 示例程序的相关内容,请参阅和产品光盘中 minigui/docs 目录下的《MiniGUI 使用说明》
文档(通常保存为 MiniGUI-USER-MANUAL*.pdf 文件)。
我们推荐运行 Linux 的 PC 机配置如下:
• 奔腾 III 以上 CPU;
•
256MB 以上内存;
• 至少 15GB 空闲的硬盘空间;
• 使用 USB/PS2 接口的鼠标(PS2 或 IMPS2 鼠标协议);
•
• 选择 Unbuntu Linux 7.10/8.04 发行版、Fedora Linux 8/9/10 发行版、Debian Linux 发行版等。安装时请选择所有的软
VESA2 兼容的显示卡,确保能达到 1024x768 分辨率,16 位色;
件包(需为 /usr 文件系统保留至少 5GB 的空间);
• 对硬盘合理分区,将 /usr、/usr/local、/home、/var、/opt 等文件系统挂装在不同的分区上,确保为 /usr/local 和 /opt
文件系统划分至少各 3GB 的空间。
1.5 版权和许可条款
本指南中作为例子提供的源代码版权归北京飞漫软件技术有限公司所有,并遵循 GPL 条款发布。有关 GPL 许可证条款的原
文,通过如下途径获得:
• mg-samples 软件包中的 COPYING 文件
• 访问 http://www.gnu.org/licenses/licenses.html 网页
Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南
2 开始 MiniGUI 编程
•
•
•
•
2.1.1 事件驱动编程
2.2.1 头文件
2.2.2 程序入口点
2.1.2 MiniGUI 的三种运行模式
2.2.3 MiniGUI-Processes 模式下加入层
2.1 基本的编程概念
o
o
2.2 一个简单的 MiniGUI 程序
o
o
o
o
o
o
o
o
2.3 编译、链接和运行
o
o
2.4 为 MiniGUI 应用程序编写 Automake/Autoconf 脚本
2.2.5 进入消息循环
2.2.6 窗口过程函数
2.2.7 屏幕输出
2.2.8 程序的退出
2.2.4 创建和显示主窗口
2.3.1 编译 MiniGUI 程序
2.3.2 MiniGUI 组件
本章以一个简单的 MiniGUI 程序为例讲述 MiniGUI 编程的基本概念和基础知识。
2.1 基本的编程概念
2.1.1 事件驱动编程
MiniGUI 是一个窗口系统及图形用户界面支持系统,通常的 GUI 编程概念均适用于 MiniGUI 编程,如窗口和事件驱动编程等。
在传统的窗口和图形系统模型中,键盘和鼠标动作产生由应用程序不断轮询的事件。这些事件通常被发送到具有焦点的窗口,
而应用程序把这些事件交由和该窗口相关联的例程来处理。这些窗口例程通常是由应用程序定义的,或者是某些标准例程中
的一个。操作系统、其它窗口的事件处理例程和应用程序代码都可以产生事件。
用于处理事件的窗口例程通常标识了某一个“窗口类”,具有相同窗口例程的窗口实例被认为是属于同一窗口类。
焦点和光标的概念用于管理输入设备和输入事件的传送。鼠标光标是一个绘制在屏幕之上的小位图,指示当前的鼠标位置。
以某种非破坏性的方式绘制该位图是窗口系统的责任,不过应用程序可以控制绘制哪一个位图以及是否显示该光标。应用程
序还可以捕捉鼠标光标并获取光标事件,即使该光标已经超出该应用程序窗口的显示范围。键盘输入有类似的输入焦点和键
盘输入插入符的概念。只有具有输入焦点的窗口才能获取键盘事件。改变窗口的焦点通常由特殊的按键组合或者鼠标光标事
件完成。具有输入焦点的窗口通常绘制有一个键盘插入符。该插入符的存在、形式、位置,以及该插入符的控制完全是由窗
口的事件处理例程完成的。
应用程序可通过调用一些系统函数来要求重绘窗口或窗口的某一部分,这些事件通常由窗口例程来处理。
Copyright © by the Feynman Software. All contents is the property of Feynman Software.