MiniGUI编程指南-V3.0.pdf

所需积分/C币:23 2017-09-08 08:56:21 5.05MB PDF

MiniGUI教程,非常适合初学者及开发人员查询和学习。 主要章节知识: MiniGUI 编程基础 MiniGUI 图形编程 MiniGUI 高级编程 MiniGUI 控件编程
Minigun3.0编程指南 enman 6海钦 第28章;属性表 第29章:滚动窗口控件 第30章:滚动型控件 笫31章:树型控件 笫32章:列表型搾件 第33章:月历控件 第34章:旋钮控件 第35章:醋工具栏 笫36章:动画控件 第37章:网格控件 第38章;图标犁控件 笫39章:独立滚动条控件 附录A:统一的 Minigui!初始化接口 Minigun3.0编程指南 enman 6海钦 简介 由北京飞漫软件技术有限公司开发的Minigul(http://www.minigui.com)是国内为数不多的几大国际知名自由软件之一。其 目枟是为实时嵌入式操作系统建立一个跨操作系统的、快速、稳定和轻量级的窗口系统及图形用户界面攴持系统。我们 将 MiniGUn定义为“针对嵌入式设备的、跨操作系统的图形界面支持系统″,属丁一种φ嵌入式图形中间件〃软件产品。目前, Minigui已成为跨操作系统的图形用户界面支持系统,可在 Linux/ω Clinux、eCos、 VxWorks、pSS、 Thread、 Nucleus、uC/oS-I OSE等操作系统,以及Win32平台上运行。 目前,Minigun可免费下我的最新开源版本(遵循GPL条款)是MiniguigPly16,10。你可以从hp://www.minigul。org下较 上述GPL版本的源代码、开发文档及示例程序。需要注意的是:免费下载的 Minigun只能用于开发GPL或其它公开溟码的 应用软件,如果你要利用 Minigui开发专有或商业软件,则必须从北京飞漫软件技术有限公司购买商业授权。飞漫软件将为 购买 Minigun商业授权的用户提供最新的 Minigui3.0标准版或专业版(或企业版)产品,并提供相关的移植及开发技术支持 服务。 本指南详细讲述了利用 Minigui13.0.开发嵌入式应用软件的基础知识、技术资料和开发技巧,內容涉及到 MiniGui3.0.x编程 的各个方面,包括消息循环和窗凵过程、对话框和控件、图形接凵等。有关 Minigui30x应用编程接凵的详细描述,可访问 htt:' Nww. mInigui. com/ api ref/3 x processes/ /index. htm-多进程运行模式(请根据实际版本来确定x的取值,如版本为306 则x为6) http:/www.miniguicom/apiref/3.0.xthreads/index.html多线程运行模式 Minigun3.0编程指南 enman 6海钦 版权声明 MiniGUI编程指南》版本3.0,适用于 MiniGUI Version30x 版权所有(C)20032010,北京飞漫软件技术有限公司,保舀所有权利。 无论您以何种方式获得该手册的仝部或部分文字或图片资料,无论是普通印刷品还是电子文档,北京飞漫软件技术有限公司 仅仅授权您阅读的权利,仁何形式的格式转换、再次发布、传播以及复制其内容的全部或部分,或将其中的文字和图片未经 书面许可而用于矞业目的,均被视为侵权行为,并可能导致严重的民事或刑事处罚 Minigun3.0编程指南 enman 6海钦 1前言 11相关的文档 12本指南的组织 ·1.3获得本指南中的例子 14示例程序的编译及运行环境 15版权和许可条款 Minigui是一个跨操作系统的、面向嵌入式系统的轻量级图形用户界血支持系统。 MiniguI项目自1998年底开始到现在, 历经十多年的开发过稈,目前已非常成熟和稳定,并且在许多实际产品或项目中得到了广泛的应用。目前, Minigui|的最新 版本是3.0。指南是 Minigui3.0的编程指南,描述如何在 Minigun之上编写应用程序。 本指南是一本关于 Minigui3.0编程的完整指南,讲述了使用Miniω3.0编程的棊础知识、编程方沄及技巧,并详细地描述 了主要的应用程序编程接口函数。虽然本指南试图尽可能详尽地描述 Minigun编程的各个方面,但它不是一本关于 Minigui ap 的完整参考手朋,该方面的信息请参考《 Mini| API Reference manua|》。 11相关的文档 和本编程指南相关的文档有: ·技术白皮书·描述 Minigui v3.0的功能特性 ·特性表- Minigui v3.0功能特性的具休描述。 Minigui丨3.。AP参考手册〔多进程模式)- Minigui3.0多进程运行模式的AP|详细描述。 Minigun13.0AP参考于册(多线程模式)- Minigui v3.0多线稈运行模式AP详细描述。 发布说明( Release notes)-有关 Minigui v3.0和先前版本的主要区别及兼容性说明文档。该文件详细描述了新版 本中的新増功能、增强或者优化等笭;请特别注意π能引起兼容性问题的増弜或缺陷修正 请访问http://www.miniguicom/index.phpid=techproducts获得飞漫软件其他产品的信息以及购买信息。 12本指南的组织 除本前言外,本指南共分四篇共三十八章 第1篇: Minigun编程基础,第2章到第12章。讲述使用 Minigui编程的基木概念。 第2篇: Minigun图形编程,第13章到第15章。讲述 Minigun图形相关接口的使用及概念。 第3篇: MiniGU高级编程主题,第16章到第18章。讲述 MiniGU- Processes相关的高缴编程概念及定’图形引 擎和输入引擎的开发 第4篇: Minigun控件编程,第19章到第38章。讲述 Minigun提供的各种控件的使用方法。 Minigun3.0编程指南 enman 6海钦 1.3获得本指南中的例子 本指南中的示例程序 mg-samples软件包( Minigui示例程序包)。我们将这些示例程序组织成」完整的 Autoconf/ Automake 项目,并以 mg-samples软件包的形式保存在产品光盘中。对 Minigui3.0产品(标准版、专业版或企业版),示例程序的代 码包保存在产品光盘的 mInigui/目录屮,相关文件如下所列 · mg-samples-3.0 x-tar. gz:《 Minigun编程指南》的配套示例程序。 · mInigui-res-3.0.xtar:gz: Minigun3.0所使用的资源,包括基木字休、图标、位图和鼠标光标。 adp/:对 Minigui3.0标准版和专业版产品,该日录中保存有针对特定廾发板(操作系统、硬件平台)的 Minigun3.0 开发包 14示例程序的编译及运行环境 木指南假定用户使用的是针对 Linux操作系统的 Minigun3.0标准版或专业版产品,因此,某些例子是以用户使用Linuⅹ操 作系统以及GNU开发环境为背景讲述的。但是,本指南中的绝大部分概念冋时适用J其他操作系统。关丁如何在其他操作 系统上安装、编译并运行 Minigui示例程序的相关内容,请参阅和产品光盘中 minigui//docs目录卜的《 Minigui使用说明》 文档(通常保存为 Minigun-USER- MANUAL*pdf文件) 我们推荐运行 Linux的PC机配置如下 ·奔腾Ⅲ|以上CPU ·256MB以上内存 至少15GB空闲的硬盘空间 ·使用USB/P2接口的鼠标(PS2|MPS2鼠标协议) VESA2兼容的显示卡,确保能达刭1024X768分辨率,16位色 选择 Linux7.10/804发行版、 Fedora linux8/9/10发行版、 Debian linux发行版等。安装时请选择所有的软 件包(需为/usr文件系统保留至少5GB的空间) 对硬盘合珒分区,将Jusr、/usr/ocal、/home、加var、/ot等文件系统挂装在不同的分区上,确保为Jusr/ocal和/opt 文什系统划分至少各3GB的空 15版权和许可条款 本指南中作为例子提供的源代码版权归北京飞漫软件技术有限公司所有,并遵循GPL条款发布。有关GPL许可证条款的原 文,通过如下途径获得: mples软包中的 COPYING文件 访问htte/www.gnu.org/licenses/licenses.htm网页 Minigun3.0编程指南 enman 6海钦 2开始 Minigui|编程 2.1基本的编程概念 211事件驱动编程 21.2 Minigun的三种运行模式 22一个简单的 Minigun|程序 221头文件 222程序入口点 223MnGU- Processes模式卜加入层 224创建和示主窗口 2.25进入消息循环 22.6窗口过程函数 227屏幕输出 2.28程序的退出 23编译、链接和运行 231编译 Minigui程序 232MnGU|组件 ·2.4为 Minigui应用程序编号 Automake/ Autoconf脚木 本章以一个简单的 Minigui程序为例讲述 Minigui编程的基本概念和基础知识。 21基本的编程概念 21.1事件驱动编程 Minigun是一个窗口系统及图形用户界面攴持系统,通常的Gυ编稈概念均适用于 Minigun编稈,如窗口和事件驱动编稈等 在传统的窗口和图形系统模型屮,键盘和鼠标动作产生山应用程序不断轮询的事件这些事件通常被发送到具有焦点的窗口, 而应用程序把这些事件交由和该窗口相关联的例程来处理。这些窗口例程通常是由应用程序定义的,或者是某些标准例程中 的一个。操作系统、其它窗口的事件处理例程和应用程序代码都可以产生事件。 用丁处理事件的窗口例程通常标识了某一个“窗口类〃,具有相同窗口例程的窗口实例被认为是属丁同一窗口类。 焦点和光标的概念用丁管理输入设备和输入事件的传送。鼠标光标是—个绘制在屏幕之上的小位图,指示当前的鼠标位置。 以某种非破坏性的方式绘制该位图是窗口系统的责仼,不过应用程序可以控制绘哪一个位图以及是否显示该光标。应用程 序还可以捕捉鼠标光标廾获取光标事件,即使该光标已经超出该应用稈序侒口的显示范围。键盘输入有类似的输入焦点和键 盘输入插入竽的概念。只有具有输入焦点的窗口能获取键盘事伫。改变窗口的焦点通常由特殊的按键组合或者鼠标光标事 件完成。貝冇输入焦点的窗口通常绘制冇一个键盘插入符。该插入符的存在、形式、位置,以及该插入符的控制完全是由窗 口的事件处理例程完成的 应用程序可通过调用一些系统函数来要求軍绘窗口或窗口的某一部分,这些事件通常由窗口例程来处哩。 Minigun3.0编程指南 enman 6海钦 212 Minigui的三种运行模式 在编写第一个 Minigui稈序之前,需要了解如下事实:我们可将MnGU配置编译成三和具有不同体系架构的版本,我们称为 运行模式: · Minigun- Threads。运行在MnGU- Threads上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或 者地址空间中运行。这种运行模式非常适合于大多数传统意义上的袄入式操作系统,比如uC/OS-、eCos、 VXWorks、 pSS等等。当然,在Lnux和 uClinux, Minigui也能以 MiniGUl-Threads的模式运行。 Minigui- Processes。和 Minigun- Threads相反, Minigui| Processes上的每个程序是独立的进程,每个进程也可以建立 多个窗口。 Minigun- Processes适合于貝有完整UNⅨ特性的嵌λ式操作系统,比如嵌入式 Linux · Minigui- Standalone。这种运行模式下, Minigun可以以独立进程的方式运行,既不需要多线程也需要多进程的支 持,这种运行模式适合功能单一的应用场合。比如在一些使用 uClinux的嵌入式产品中,因为各种原因而缺少线程 库支持,这时,就可以使用MnGU- Standalone来开发应用软件。 和Linuⅹ这样的类υNⅩ操作系统相比,一般意义上的嵌入式操作系统具冇一些特殊性。举例而言,诸如 uClinux、uc/OS-I eCos、 xWorks等操作系统,通常运行在没有MMU(內存管理屮元,用于提供虛拟内存支持)的cPU上,这时,往往就没 有进程的概念,而只有线程或者任务的概念,这样,GU丨系统的运行环境也就大相径庭。因此,为了适合不同的操作系统环 境,我们可将 Minigun配置成上述和运行模式 般而言, Minigun- Standalone模式的遹应面最广,可以攴持几乎所有的操作系统,甚至包括类似DoS这样的操作系统; Minigun- Threads模式的遹用面次之,可运行在支持多任务的实时嵌入式操作系统,或者具备完整UNX特性的普通操作系统 之上; Minigui- Processes模式的适用面较小,它仅适合于具备完整UNX特性的普通操作系统。 MiniGun的早規版本(即 Minigυ- Threads)采用基于PosⅨⅸ线程的消息传递和窗口管理机制,这和实现提供最人程度上的数 据共享,但同时造成了 Minigω体系结构上的脆蚵。如果苿个线程因为非法的数据访问而终止运行,则整个系统都将受到影 响。为了解决这个问题,使 Minigun更符合嵌入式 Linux系统的应用需求, Minigui从0.98版本始推山Lite运行模式。 ite运行模式下的 Minigω使用嵌入式inuⅹ的进程机制,从而使得 Minigui夏稳定。基于有效旳客户/服务器结构, 在 MiniguiμLite模式下,我们可以运行多个客户进程,并且充分利用类似地址空闻保护的高级性能。因此,在 Minigul-Lite运 行模式下,基于 Minigui的嵌入式系统的灵活性和稳定性将得到极人的提高。举例来说,我们可以在 MiniGui-ite运行模式 下运行多个 Minigui客户进程,并且如果其中一个进程不正常终止,其他进程将不受影响。除此之外,在 Minigun-ite运行 模式卜,非常有利于我们集成第三方应用程序。实际上,这就是为什么许多嵌入式设备发商使用 Linux作为他们的操作系 统的主要原因 尽管 Minigul-Lite运行模式提供了多进稈攴持,但是亡不能同时管理不同进稈创建的窗口。因此, Minigui-ite运行模式根据 层来区分不同进程屮的窗口。这种方法适合于大多数具有低端显示设备的嵌入式设备,但是也给应用程序的开发带来了一些 问题 Minigui v2.0ⅹ完全地解决了这一问题。 Minigul-Lite运行模式下,客户创建的窗口不是一个全局对象,也就是说,客户不知 道其他人创建的窗口。然而, MinigUn- Processes模式下创建的窗口都是全局对象,并且由这种模式下创建的窗口可以互相剪 切。 Minigui- Processes是 Minigui-ite的继承者,它支持具夆完整UN特性的嵌入式操作系统,如 Linux 在 Minigui- Processes运行模式中,我们可以同吋运行多^ Minigui应用程序。首宄我们启动一个服务器程序 mginit,然后我 们可以启动其他作为客户端运行的 Minigui应用稈序。如果因为某种原因客宀终止,服务器不会受仟何影响,可以銖续运行, Minigun3.0编程指南 enman 6海钦 【注意】本指南中,我们假定您安装的是 Minigun- Processes运行模式。在运行这些示例程序之前,应该首先运行 mginIt程 序,它可以是用户自定义的 mginit程序或是mg- samples中湜供的 mginit程序。我们已经仔细编码以确保毎个示例程序都 能在 Minigun- Processes及 Minigui- Threads模式下编译并运行。 此外, Minigui提供类win32的AP,熟悉win32编程的读者可以很怏地掌撻 Minigui编程的基本方法和各个AP|。 22一个简单的MnGU程序 理解 Minigui基本编稈方法的最快途径就是分析一个简单稈序的结构。清单2.1是一个 Minigun版本的" Hello world!"稈序, 我们将对其进行详细的解释说明。 清单2.1 helloworld.c #include <stdio.h> #include <minigui/common. h> #include <minigui/minigui. h> #include <minigui/gdi. h> #include <minigui/window. h> static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM IParam) HDC hd c switch(message)[ case MSG paint: hdc= Begin Paint(hWnd); Textout(hdc, 60, 60, " Hello world! " End Paint(hWnd, hdc); return o case MSg close Destroy Main Window(hWnd PostQuitMessage(hWnd) return o

...展开详情

评论 下载该资源后可以进行评论 1

chqu minigui 3.0编程教程可以,初学者可以看看
2017-10-21
回复
img
weidadzt

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源