MOTIF 技术及其开发应用
来源:互联网 发布:mac可设置定时关机吗? 编辑:程序博客网 时间:2024/06/10 01:32
MOTIF 技术及其开发应用
1、引言
、引言Motif 最初是由 OSF(开放基金协会)开发的一个工业标准的 GUI(图形用户接口)。1996年,OSF 与 X/Open 合并为 Open Group,1997年初,X 联盟结束,并将其归属的项目移交给 Open Group。Open Group 继续开发和支持X窗口系统,Motif,CDE,和其他技术。2000年5月15日,Open Group 使用公共许可证向开放原代码团体发布了 Motif 的原代码。在开放系统(如 Linux)上,可以使用免费的 Motif。
Motif 最先实现并运行于支持X窗口系统上,它是UNIX系统的主要用户接口。目前已经应用于超过200种硬件和软件平台。Motif GUI Toolkit推动了异种机和网络环境下的应用开发,各种机器包括便携机、PC、工作站、超级计算机都得益于 Motif 环境下的应用程序一致的行为和视感。用 Motif GUI 开发的应用软件具有高度的可移植性、可交互性、以及可伸缩性。
2、Motif技术简介
Motif技术的核心部分包含三个部分:可扩充用户接口工具箱,用户接口语言(UIL),窗口管理器(MWM)。
技术的核心部分包含三个部分:可扩充用户接口工具箱,用户接口语言(UIL),窗口管理器(MWM)。2.1、用户接口工具箱
开发Motif应用软件主要使用三个库:Xlib, Toolkit Intrinsics(Xt),和Motif Toolkit。
Xlib是在X协议上为用户提供的C语言客户接口。尽管Xlib提供了与X Server交互的基本工具,仅使用Xlib来开发复杂的应用软件是一件非常艰苦的工作,为了简化开发工作,X提供了一些高级的接口,即X Toolkit Intrinsics,简称Xt。Xt的三个最重要的贡献是:对象,即所谓Widget的引入;Widget 布局管理;以及事件的分发和处理。
Xt提供的是一组低层的Widget,是一个特定的用户接口层;Motif Toolkit则是建立在Xt Toolkits之上的Widget对象类集合。Motif使用低层的Widget同时建立了基本的类和各种子类。Motif提供的Widget加入了一些应用所通用的特性:可视风格、选择和拖放等。其设计利用了Xt Intrinsics的机制,同样也采用面向对象的程序设计方法。
Motif主要有三组Widget:XmPrimitivs和XmGadgets、XmManager、以及Shell。
XmPrimitivs是没有子Widget的Widget。它是公共的输入输出的基本单位,通常是建立复合Widget的部件。XmPrimitivs是Core的子类。XmPrimitivs有基本的颜色资源和键盘游历行为。XmPrimitivs仅用作特定行为类的超类。
XmGadgets 是从 XmPrimitive 派生,没有窗口,有布局资源。 Gadgets 从其父Widget继承颜色资源并依具其父Widget分发事件。XmGadget是RectObj的子类。
XmManager类是所有管理器的超类,是Core的子类。目的之一是定位和形成其子Widget,另一个目的是确定其子Gadget是否要处理一个输入事件,如果是,就把事件发到子Gadget。XmManager 类是一个不能实例化的类,仅能作为其他Widget的子类。
Xt 和 Motif 都定义了一组Widget,主要目的是封装其他Widget,并和窗口管理器进行通信,这些Widget叫Shell. 每个有顶极窗口的Widget都放在一个Shell中。Motif的许多便利函数在生成Widget时也自动生成Shell。Motif提供了三种类型的Shell:VendorShell,DialogShell,and MenuShell。
和 Motif 都定义了一组Widget,主要目的是封装其他Widget,并和窗口管理器进行通信,这些Widget叫Shell. 每个有顶极窗口的Widget都放在一个Shell中。Motif的许多便利函数在生成Widget时也自动生成Shell。Motif提供了三种类型的Shell:VendorShell,DialogShell,and MenuShell。2.2、用户接口语言
用户接口语言是在Motif Tollkit的基础上开发的用户界面描述性语言。开发人员可使用用户接口语言描述用户界面组件的属性和回调函数,及组件间的层次关系,并将其存为以 .uil 为后缀的文本文件。应用程序调用Motif资源管理器MRM的函数读取和解释界面定义文件创建界面。使用Motif结合用户接口语言可以方便、快速地开发用户界面。
2.3、窗口管理器
X 窗口系统应用的用户一般要使用一个窗口管理器。Motif也提供了自己的窗口管理器MWM。Motif的窗口管理器是一个独立的应用。它可以管理应用的窗口而不管应用是否以Motif建立。并可以有效地管理多个显示器。
2.4、Motif风格指南
2.4、Motif风格指南Motif 提供了风格指南,它以文档的形式描述了用Motif用户接口实现的应用软件应遵循的规范。目的是为了维护Motif应用软件行为和视感的一致性。Motif规范存在于两个文档:Motif风格指南,定义应用程序应该遵循的外观;应用环境规范,定义应用程序接口。Motif规范在IEEE 1295规范中定义。Motif规范并不是强制性的规定,而是建议性的规范。
3、Motif 编程模式
Motif应用编程接口是用C语言实现的。它是面向ANSI C 的编程接口,Motif的从第二版增加了对C++ 的支持。Motif用户接口的设计一般需要完成下列工作:
包含需要的头文件:除了C 的一般头文件外,还需要包含X 和 Motif 的头文件。
初始化 Xt Intrinsics:初始化建立应用程序现场,打开 X 服务器的显示,建立资源数据库,然后创建 ApplicationShell Widget,它是应用程序中其他Widget的父Widget。初始化 Xt 一般使用 XtAppInitialize() 函数。
建立构成应用界面的 Widgets 层次结构。
注册回调函数: Widget 注册自己的事件处理过程或动作函数。
使 Widget 显示在屏幕上:即建立与该 Widget 相应的窗口。Widgets 在生成时。Motif并没有自动实现 Widget,必须调用 XtRealizeWidget(parent) 来实现 Widget。
进入事件循环:使用 XtAppMainLoop()函数。设计者也可以通过 Xt Intrinsics 提供的两个专门的事件分发函数 XtAppNextEvent 和 XtDispatchEvent 建立事件循环,对事件进行过滤处理。
。
。4、结束语
Motif本身仅提供了最基本的应用编程组件,有大量的第三方软件供应商和非商业组织提供的专用Widget类库,如Sitraka公司的用于绘制图形图表的XRT;可在Motif Widget窗口显示HTML格式文本的XmHTML库;支持多煤体的EuroBridge Widgets(Xew) ;LiteClue Widgets; Xmt 等。结合这些专用的Widget类库使得用Motif开发相应的软件非常容易。另外,还有一些建立在Xt / Xm基础上的可视化的快速开发工具,如ICS的BX Pro、LOOX SOFTWARE的BX/LOOX等。
参考文献
Motif Programming Manual for OSF/Motif By Dan Heller & Paula M. Ferguson O’Reilly & Associates, Inc. Motif 与图形用户界面开发工具 张倪 莫斌等编著 清华大学出版社 http://www.opengroup.org/motif/motif.data.sheet.htm http://www.rahul.net/kenton/MotifWidgets.html
Motif 与图形用户界面开发工具 张倪 莫斌等编著 清华大学出版社
http://www.opengroup.org/motif/motif.data.sheet.htm
http://www.rahul.net/kenton/MotifWidgets.html
’Reilly & Associates, Inc.Motif 与图形用户界面开发工具 张倪 莫斌等编著 清华大学出版社
http://www.opengroup.org/motif/motif.data.sheet.htm
http://www.rahul.net/kenton/MotifWidgets.html
- MOTIF 技术及其开发应用
- 中间件技术及其应用
- 中间件技术及其应用
- 综合布线技术及其应用
- 隧道技术及其应用
- 中间件技术及其应用
- 中间件技术及其应用
- 隧道技术及其应用
- MPLS技术及其应用
- 中间件技术及其应用
- 流媒体技术及其应用
- 中间件技术及其应用
- NAT技术及其应用
- CGI技术及其开发
- CGI技术及其开发
- 中间件技术及其应用(一)
- 中间件技术及其应用(二)
- 移动流媒体技术及其应用
- 支持ActiveX Control
- 离开139
- 哈哈~笑话!
- 又回CSDN-blog
- Tomcat下JSP、Servlet和JavaBean环境的配置[start_java]
- MOTIF 技术及其开发应用
- 提前上班
- 昨天发现新的问题
- 一个比较好的asp类
- 利用adsutil.vbs脚本创建自定义web站点
- 什么是RSS?
- 8088 汇编速查手册
- Difference between isql.exe and osql.exe while executing sql script
- c#.net常用的小函数和方法集