前言

时至今日,MiniGUI已经走过了十年的路程。目前的MiniGUI已经成为一套具有完整清晰定义的移植层、优秀的窗口管理机制、丰富而易用的控件并可以进行外观定制的嵌入式GUI系统;在上层的组件中,MiniGUI还包含了3D接口、输入法、打印甚至浏览器等组件。从一款默默无闻的小型GUI程序,到现在成为全球嵌入式软件领域的鼎鼎大名的软件。对于中国人来说,MiniGUI所承载的不仅仅是一款软件的成功,更体现了中国人的东方式智慧完全有能力在世界的嵌入式软件行业中占据一席之地。可以肯定地说,MiniGUI的诞生和发展鼓舞了中国人在软件研发领域的热情,也坚定了中国人进入世界嵌入式软件开发前沿的信念。

MiniGUI的发展历程同时也从一个侧面体现了中国嵌入式技术的发展历程。MiniGUI的创始人魏永明先生等一批中国嵌入式技术的先驱引领了嵌入式技术在中国发展的潮流。自从1998年魏永明先生发布MiniGUI的第一个版本开始,这个项目就一直吸引并带领着来自不同专业、不同领域的国人进入了嵌入式技术的世界。作为一个交叉学科,嵌入式系统的技术需要综合性的人才,MiniGUI的发展吸引了更多人进入这个领域。作为一个嵌入式的GUI系统,MiniGUI的开发让人们更多熟悉了嵌入式系统的开发流程。在这个过程中,嵌入式技术的门槛对于大众降低了很多,以前某些只有研发企业和高校才有能力开发的项目,现在普通的爱好者也可以参与开发。更多人的参与同时也促进嵌入式技术在中国有了更好的发展。

从MiniGUI的开源版本中,我们深刻地感受到了这个中国人自己创作的一套完整嵌入式GUI系统的魅力。随着对MiniGUI的学习,很多人在数年之前进入了嵌入式系统领域,他们当中很多人成为了现今中国大陆地区嵌入式技术的中坚。在对MiniGUI的关注中,每一个从事嵌入式研发相关的人员都可以从API的制定、为移植构建的抽象层、代码组织、软件组织架构乃至整个嵌入式系统中间件的架构得到丰富的收获。

飞漫公司的成立已经有6个年头了,MiniGUI在飞漫公司的运作中得到了更大的发展。在这个过程中,我们欣喜地看到MiniGUI并没有像很多纯粹的技术产品一样虎头蛇尾,而是在开源版本和商业版本双线上成功地发展。MiniGUI同时具有了开源软件开放性的特点和商业软件高品质的特点。

作为一款软件产品,MiniGUI的商业版本使得MiniGUI得到了长足的进展,让MiniGUI稳定地运行到了更多的设备上。目前,MiniGUI在小型嵌入式系统上面的移植具有无可比拟的优势。对比同类的嵌入式GUI系统,MiniGUI不仅性能开销较低,而且明显具有更强的可移植性和可配置性。MiniGUI可以灵活提供各种功能定制:小到简单的图形绘制库,大到整个系统的解决方案。由于MiniGUI系统生根发芽的土壤在中国,它相比其他的GUI系统更适合由中国人来开发。目前MiniGUI在中高端手机、PDA类产品、机顶盒、智能家居以及工控、仪表领域都有了广泛的应用。

尤其值得指出的是,虽然飞漫是一家研发软件产品的公司,但是魏永明先生带领飞漫团队对中国技术界本着非常负责任的态度,依然在进行着一定程度的技术传播和交流,这也很大程度上促进了嵌入式软件技术的提高。飞漫的成功对中国软件业发展也是一个很好的启迪。

MiniGUI在稳定发展了若干年后,目前最新的版本为MiniGUI3.0。此时的MiniGUI在接口上已经基本稳定,但也具有了很强的扩展性。MiniGUI正向着可以提供整套的解决方案、友好的开发环境、并且可以接受第三方的应用的方向发展。飞漫的定制模式也让基于MiniGUI的软件开发的分工更加明确,这样可以使基于MiniGUI的产品具有更快更好的开发效率。MiniGUI的发展历程不仅是技术上的发展,也是对行业产业链和发展模式的思考。

本书主要内容

本书通过介绍MiniGUI系统的开发,给读者展示一个学习GUI系统程序的平台。本书的内容可以体现两个层次的内容:其一是对MiniGUI的应用程序开发的学习,读者可以通过对照光盘中的程序学习本书的内容,在学习之后可以单独进行MiniGUI应用程序的开发;其二是对GUI系统程序设计思想的学习,虽然MiniGUI系统和其他GUI系统存在差异,但是GUI系统整体设计的思想是通用的,读者根据本书的内容学习并进行思考后,在开发其他的GUI系统的时候也可以快速地上手。

对于一个GUI系统的学习,可以分成三个层次:第一个层次是了解GUI系统层次结构和程序框架;第二个层次是熟悉这个GUI系统所提供的功能;第三个层次是如何使用GUI系统构建完整的应用程序。

本书的第3章、第4章主要介绍了MiniGUI系统在第一个层次的内容。通过这两章的学习,读者可以熟悉MiniGUI系统的软件各个层次的关系,也可以学会如何使用MiniGUI构建一个简单的应用程序。

本书的第5章到第12章主要介绍了MiniGUI系统在第二个层次的内容。主要内容为MiniGUI主窗口、对话框、控件的使用、GDI编程以及其他一些方面的内容。其中,主窗口、对话框和控件的使用三者构成了完成MiniGUI应用程序的主体;GDI名为图形设备接口,这是一组较低层次的API,GDI编程可以让读者深入控制系统,进行更灵活的程序设计;其他方面的内容包括菜单、键盘和鼠标处理、图标、光标、定时器等内容。第12 章单独介绍了MiniGUI扩展库的内容,包括扩展的对话框、控件和皮肤等功能。

本书的第13章到第16章主要介绍了MiniGUI系统在第三个层次的内容。这些章节通过展示MiniGUI演示库的例子,让读者学习使用MiniGUI提供的接口构建完成的应用程序。这些简单的应用程序可以体现GUI系统设计的一些思路。

本书读者对象

本书既适合需要进入MiniGUI应用程序开发领域的人员,也适合需要学习通用的GUI技术的人员。MiniGUI系统是一个目前广泛应用的嵌入式GUI系统,可以通过学习这个系统进入GUI程序开发的领域。本书要求读者具有C语言编程的一定基础。本书的开发环境可以使用Ubuntu、Fedora或OpenSuse等Linux发行版,需要安装了GCC、make等基本的工具,然后可以根据本书提供的光盘建立开发环境。本书光盘中也提供了部分Windows中的开发环境,可以在Windows的Visual C++6.0环境中使用。

在本书的学习过程中,为了取得事半功倍的效果,读者可以使用边学边练的方式,对于书中的示例程序,应对照光盘中的程序或自己练习编写程序进行验证和扩展。由于各个控件的使用相似性较多,本书只选取了具有代表性的进行介绍,并在附录中列出了控件的特性。读者可以通过参考MiniGUI的API手册和头文件中的描述,自己编写程序进行更多的练习。对于完整GUI程序的组织,读者应根据自身需要完成软件的需求,结合一般软件工程的思想和MiniGUI接口的特点进行设计和实现。此外,MiniGUI的API大都是通过深思熟虑发布的,具有简洁、含义明确和便于扩展的特点,读者在这方面进行思考,可以提高自身软件工程的思想。

本书由韩超规划和编著,北京飞漫软件技术有限公司为本书提供了丰富的资料。本书的配套光盘由韩超组织完成,其中部分内容依据北京飞漫软件技术有限公司授权加入。在本书及其配套光盘的编著过程中,亚嵌嵌入式教育研究中心为本书提供了支持,郎铁山、王旭光参与了审校工作。本书的出版也是飞漫多年技术积累的成果。本书作者和参与编著人员长期立志于推广嵌入式技术,努力促进公众的技术共同进步。由于时间仓促,本书可能依然存在一些错误和问题,请读者见谅。MiniGUI的发展需要广大的技术人员共同参与,欢迎读者讨论和指点。