Linux开发GUI应用程序概述

Linux开发GUI应用程序概述
 
Linux历史简介
1991年,芬兰大学生Linus Torvalds编写了一个小的操作系统内核,这就是Linux的前身,Linus Torvalds也由此成为了Linux之父。Linus Torvalds将Linux系统的源代码在Internet上公布,使Linux的发展受到了众多计算机高手的鼎力相助,Linux从而不断地增加新的 特性,不断地提高稳定性。现在,Linux已经成为一个非常流行的操作系统。
Linux是遵从GPL协议。也就是说,只要遵从GPL协议,就可以免费得到它的软件和源代码,并对它进行自由地修改。但对一般用户来说,对Linux的源代码进行编译和安装是难度很高的工作。
所以,一些公司介入Linux的业务,它们将Linux操作系统及一些重要的应用程序打包,并提供较方便的安装界面。这些公司所提供的产品一般称为Linux的发布版本。
目前比较著名的Linux发布版本有以下几种:
RedHat—最著名的Linux服务提供商。
SlackWare—历史比较悠久的发行版本。
SUSE—在欧洲知名度较大。
TurboLinux—在亚洲用户较多。该公司汉化做得很出色。
Debain—完全由Linux社区的计算机高手维护的发布版本。
XteamLinux—北京冲浪平台公司推出中国第一套汉化发布版本。
BluePoint—内核汉化技术比较引人注目。
红旗Linux—中科院软件所和北大方正推出的发布版本。

 

Linux的优点
Linux有众多的优点,下面列出主要的几个:
* Linux是一个多任务、多线程、多用户的操作系统。
* Linux性能稳定,功能强大,可以与商用操作系统相提并论。
* Linux可以适应很多的平台。它可以在Intel公司的x86计算机及其兼容机、Alpha计算机,以及苹果等计算机上运行。 Linux还可以在许多嵌入式设备上运行。
* Linux之上的应用程序正在逐渐增多。大多数为UNIX开发的应用程序都能在Linux上运行。
Linux还可以在仿真软件的帮助下运行许多DOS应用程序和Windows应用程序。
* 公开源代码是Linux最大的优越性,只要遵从GPL协议,就可以自由地对Linux进行修改和剪裁,以适应个人需要。

 

Linux的桌面环境
Linux有一套简便易学的图形用户接口(GUI),用户使用鼠标就可以完成大多数工作。在Linux中,GUI由窗口系统,窗口管理器,工具包和风格 等几个部分组成。窗口系统用于组织显示屏上的图形输出,窗口管理器用于对窗口的操作如最小化等,工具包是用于编程界面的库,风格是应用程序的用户界面。
现在,Linux下的桌面环境主要包括KDE和Gnome两种。
KDE(K Desktop Environment)桌面环境目的是提供一个开放源代码的图形用户接口和开发环境。
KDE一度成为许多Linux发布版本的首选桌面环境。但是,KDE是基于QT库的。Qt最初并不遵从GPL协议。所以,将KDE建立在QT之上是一件危险的事,它将依赖于开发QT库的公司。
所以,后来的Linux发行版本中加入了Gnome主面环境。Gnome是GNU Network Object Model Environment(GNU,网络对象模型环境)的缩写。Gnome的发展很快,已成为一个强劲的GUI应用程序开发框架,可以在任何一种UNIX系 统下运行。
Gnome使用的图形库是Gtk+构件库,它是基于LGPL协议的。Gnome的界面与KDE的界面类似,熟悉KDE的用户无需学习就能够使用Gnome。所以,Gnome现在已经成为大多数Linux发布版本的首选桌面环境。
Gnome是一个集成桌面环境,也是一个应用程序开发框架,由很多的函数库组成。即使用户不运行Gnome桌面环境,用Gnome编写的应用程序也可运 行,但是这些应用程序是可以很好地和Gnome桌面环境集成的。Gnome的开发结构使我们可以开发一致和易用的应用程序。

 

开发所使用的库
Gtk+(GIMP ToolKit,GIMP工具包) Gtk+最初用于开发GIMP,是一个用于创造图形用户接口的图形库。Gtk+是基于LGPL授权的,因此可以用Gtk+开发开放源码软件的自由软件或商业的非自由的软件。
Gtk+是在Gdk(GIMP Drawing Kit,GIMP绘图包)的基础上创建的。Gdk是对Xlib函数的包装。我们一般用GTK代表软件包和共享库,用Gtk+代表GTK的图形构件集。
Gtk+图形库使用一些称为“构件”的对象来创建GUI应用程序。它提供了窗口、按钮、框架、列表框、组合框、树、状态条等很多构件,可以构造丰富的用户界面。
在Gtk+图形库构件基础上,又开发了一些新构件,这些构件都是Gtk+构件库的补充,它们提供了许多Gtk+构件没有的功能。一般把这些构件称为Gnome构件。使用Gnome构件可以使开发界面一致的应用程序变得更加容易。
Gnome的应用程序开发结构核心是一套库,是由C语言编写的,对很多语言都提供了GnomeAPI接口,包括Ada、Scheme、Python、Perl、Tom、Eiffel、Dylan等。


Gnome的开发架构包含以下一些内容:

1. 非Gnome库
Gnome继承了自由软件一些函数库。其中一些库Gnome应用程序开发架构的一部分,但是不属于Gnome库。可以在Gnome环境中使用这些库函数。主要有以下几种:
Glib库 —Glib是Gnome的基础,它是一个C工具库,提供了创建和操作常用数据结构的实用函数。
Gtk+库—Gtk+(GIMPToolkit的缩写),是在Gnome应用程序中使用的GUI工具包。Gnome在基本Gtk+构件集合的基础上添加了许多其他构件。
ORBit库—ORBit是一个用C开发的CORBA2.2ORB。和其他ORB相比,它短小精悍,但速度更快,同时还支持C语言映射。ORBit是以一整套库函数的方式实现的。
Imlib库 Imlib(图片库)提供一些例程,其中包括加载、存储、显示,以及定绘制各种流行的图像格式(包括GIF、JPEG、PNG以及TIFF)的函数。

 

2. Gnome库
Libgnome库—Libgnome是一些与图形用户接口无关的函数集合,Gnome应用程序可以调用其中的函数。
Libgnomeui库—Libgnomeui包含了与GUI相关的Gnome代码。它由为增强和扩展Gtk+功能而设计的构件组成。libgnomeui主要包含:
(1)GnomeApp构件一般用来为应用程序创建主窗口。
(2)GnomeCanvas构件用来编写定制构件。
(3)Gnome内置的pixmap用于创建和使用对话框的例程。
Libgnomeui中还有几种其他构件,如GnomeEntry、GnomeFilePicker等。
Libgnorba库—libgnorba提供与CORBA相关的实用程序。

 

3.其他库
这些库一般使用在Gnome应用程序中,但它不属于Gnome-libs:
Gnome-print库—Gnome-print提供一个虚拟输出设备,一段代码能输出到一个打印预览构件或PostScript文件,还可以输出到其他打印机格式。
Gnome-xml库—Gnome-xml能按照树状结构分析XML,也能按照XML输出树状结构。
Guile库 Guile是Scheme编程语言在一个库中的实现,它使任何应用程序都能带有一个嵌入式的Sheme解释器。
Bonobo库—Bonobo是一种对象嵌入式结构,类似于Microsoft的OLE。

 

编程语言和编程工具
在Linux下的常用开发语言是C语言,Linux上的很多应用程序就是用C语言写的。当然,也可以使用其他语言。因为Gtk+和Gnome是用C语言编写的,所以在开发Linux下的GUI程序时使用C语言是非常方便的。Gtk+也提供与许多其他语言的接口。
一般的Linux发布版本中都提供了C编译器gcc或egcs。使用gcc或egcs可以编译C和C++源代码。各种C编译器都要使用一些C语言实用函 数。为了保证程序的可移植性,gcc没有使用通用的C函数库,而是使用一种称为glib的函数库。glib也是Gtk+的基础。它包含一些标准函数的替代 函数和基本数据结构的实现。
还有许多使用工具可以提高Linux下的编程效率,如gdb是优秀的C语言调试器,有非常丰富的调试指令。automake和autoconf用于由源代码结构配置编译选项,生成编译所需的Makefile文件。
在Linux下开发GUI应用程序,像Windows平台上的可视化快速应用程序开发工具还很少。有几种正在开发的RAD(Rapid Application Development)工具,比如我们以后将要介绍的Glade—一种GUI生成器,可以快速生成创建界面的C源程序。
 

中文摘要 004-005 ABSTRACT 005-8 第一章 概述 8-17 1.1 嵌入式系统概述 8-11 1.1.1 嵌入式系统定义 8-8 1.1.2 嵌入式系统的特点 8-9 1.1.3 嵌入式系统的发展 9-10 1.1.4 嵌入式系统的前景 10-11 1.2 图形用户界面概述 11-15 1.2.1 图形用户界面的发展 11-12 1.2.2 图形用户界面的基本特征 12-12 1.2.3 图形用户界面的结构模型 12-14 1.2.4 图形用户界面的发展趋势 14-15 1.3 课题来源和选题依据 15-16 1.4 本文内容安排 16-17 第二章 嵌入式系统下的GUI 17-25 2.1 嵌入式GUI的地位及特殊要求 17-18 2.2 当前已有的嵌入式GUI的实现方式 18-23 2.2.1 紧缩X Window系统 19-19 2.2.2 MiniGUI 19-20 2.2.3 MicroWindows系统 20-22 2.2.4 OpenGUI 22-23 2.2.4 Qt/Embedded 23-23 2.3 各种嵌入式GUI系统之比较 23-25 第三章 嵌入式GUI系统的设计 25-30 3.1 需求分析 25-26 3.1.1 总体描述 25-25 3.1.2 功能需求 25-26 3.1.3 性能需求 26-26 3.2 体系结构 26-30 3.2.1 核心机制模块 27-27 3.2.2 资源和字体模块 27-28 3.2.3 图形设备接口 28-28 3.2.4 GUI对象模块 28-29 3.2.5 控件类模块 29-29 3.2.6 输入法接口模块 29-30 第四章 核心机制模块的设计与实现 30-68 4.1 消息事件驱动机制子模块 30-44 4.1.1 概述 30-31 4.1.2 消息队列初始化 31-32 4.1.3 消息循环 32-33 4.1.4 消息获取 33-36 4.1.5 消息分发 36-36 4.1.6 消息路由 36-43 4.1.7 其他消息队列操作 43-44 4.2 桌面子模块 44-64 4.2.1 概述 44-47 4.2.2 增加窗口 47-51 4.2.3 删除窗口 51-57 4.2.4 将窗口置为最上 57-60 4.2.5 显示窗口 60-61 4.2.6 移动窗口 61-63 4.2.7 激活窗口 63-63 4.2.8 捕获窗口 63-64 4.2.9 使能窗口 64-64 4.3 定时器子模块 64-66 4.3.1 概述 64-65 4.3.2 设置定时器 65-65 4.3.3 删除定时器 65-65 4.3.4 复位定时器 65-66 4.4 初始化子模块 66-66 4.5 预定义堆子模块 66-68 第五章 输入输出层的设计与实现 68-71 5.1 输入层的设计与实现 68-69 5.2 输出层的设计与实现 69-71 第六章 系统性能评测 71-77 6.1 GUI性能测试要求 71-72 6.2 测试的硬件环境 72-72 6.3 测试结果 72-75 6.4 与其他嵌入式GUI系统的比较 75-77 第七章 结束语 77-078 参考文献 078-81
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值