📄 00000004.htm
字号:
<BR> 应用程式介面决定了使用者和应用程式间交谈的风格,举例来说,如何用 <BR>指标选一个选项等,X不提供标准的应用程式介面,只提供基本的结构以便建 <BR>造它们。 <BR> <BR> 当那些具有一贯性的应用程式介面被放在一起,便叫做工具箱(toolkit), <BR>它是基础视窗系统软体中最高最有效率的层次,较低层次的细节,被隐藏起来, <BR>因此简化程式和维持介面的一贯风格变得容易执行,当使用者控制应用程式时 <BR>好像有一套”虚拟文法(virtul grammer)”一般,需要注意很重要的一点是, <BR>工具箱在编译程式的时候被指定,所以一个client的应用程式介面在编译的时 <BR>候就被决定了,如果不重新编译便无法改变。 <BR> <BR> MIT 版的X大多数的应用程式均使用标准的工具箱和一套来自MIT 的工具 <BR>箱软体构成要素,这造成你可以得到一致性的介面。除此之外,有些结构更提 <BR>供了定制的应用程式操作方法和设定它们的预设值。 <BR> <BR> <BR>3.3 其它的系统面貌 <BR> <BR> 在本节中,我们讨论将应用程式之间传递资讯所用的性质结构(property <BR>mechanism),视窗的树状阶层组织,和X不包含在作业系统中的优点。 <BR> <BR> <BR> 3.3.1 client之间的通讯 -- ”性质” <BR> <BR> client和server之间的通讯是藉著送出 "需求" 和接收 "事件" ,但有时 <BR>client需要和其它的client传递资讯,例如,正常的应用程式需要告诉视窗管 <BR>理器它的位置和大小,这就需要X的性质结构了。 <BR> <BR> ”性质”是一小段资料的名称,这一小段资料存在server中且关联到一个 <BR>特定的视窗,任何client均可向server查询某一特定视窗”性质”的值。 <BR> <BR> 让我们看一个client如何把它所喜欢的表徵图名称传递给视窗管理器的□ <BR>例:client把表徵图名称存到这个视窗的WIM_ICON_NAME ”性质”去,当视窗 <BR>管理器执行表徵图化这个应用视窗时,它会去找这个应用视窗的WIM_ICON_NAME <BR>的”性质”,而後显示”性质”中的表徵图名称。 <BR> <BR> 应用程式也可以和不是视窗管理器的其它的应用程式通讯,一个常见的例 <BR>子是在分属不同应用程式的视窗之间做剪贴(cut-and-paste) 操作,一段本文 <BR>从一个应用程式中”切下”(cut) 稍後再”贴”到另一个应用视窗,”性质” <BR>在此被用到,”性质”依序编成”CUT_BUFFER0”,”CUT_BUFFER1”…等等, <BR>所有的应用视窗便可藉此交换资料。 <BR> <BR> 最後一个例子是称为resources 的”性质”,它被用来定义应用程式的预 <BR>设值设定,在根视窗(root window) 中有一个名为RESOURSE_MANAGER的性质存 <BR>放著所有设定的名单,它会被所有的应用程式存取,用来做是否要执行任何设 <BR>定的依据。 <BR> <BR> <BR> 3.3.2 在X中视窗的阶层性 <BR> <BR> 本节描述视窗在系统中的组织及如何建立,和对应用程式的影响。 <BR> <BR> 所有在X中的视窗都可视为一个树状结构阶层 (hierarchy)的一部份,树 <BR>的根部便是根视窗,涵盖了整个萤幕,应用视窗都是根视窗的子代(children), <BR>上层的视窗可以拥有它自己的子视窗,图3-1 有两个应用视窗。 <BR> <BR> ┌———————————————┐ <BR> │ p34 fig 3.1 (???) │ <BR> │ │ <BR> │ 图3-1 在萤幕上重叠的视窗 │ <BR> └———————————————┘ <BR> <BR> ”paint ”程式包含了一个被当做选单用的子视窗,对每一个选择又有一 <BR>个子视窗对应,相关的视窗树见图3-2 。 <BR> <BR> ┌———————————————┐ <BR> │ p35 fig 3.2 │ <BR> │ │ <BR> │ 图3-2 视窗的树状结构阶层 │ <BR> └———————————————┘ <BR> <BR> 在X的设计理念下,制造一个视窗非常容易,你可以利用视窗来控制选项 <BR>,像选单、卷动棒(scrollbars)、控制钮(control button)等等,即使是大量 <BR>也无妨,例如像试算表中的一个cell等。这种观点从程式设计师的角度大於使 <BR>用者,但的确对使用者当他”定制”(customising) 特定的程式时有影响,在 <BR>本章以後的章节会再度提到。 <BR> <BR> 为了允许应用程式有子视窗,X提供了大量的设备程式供client程式使用, <BR>如此不但能达成一致性,也避免了相同的需求造成了重复的工作,例如像图3-1 <BR>的下拉式选单,可以在应用程式中以一致子视窗完成,这个子视窗有它们自己 <BR>的选单选择方框(pane),和用以侦测使用者碰触滑鼠按钮的标准结构,如果没 <BR>有子视窗,复杂的程式和输入处理将无可避免。 <BR> <BR> 子视窗的位置和大小并不受父视窗的限制,子视窗可大可小,可以大过父 <BR>视窗或只占父视窗的一部份,但是它会被父视窗剪裁(clipped) ,也就是说, <BR>子视窗所有超出父视窗的部份将会消失不见。见图3-3 <BR> <BR> ┌———————————————┐ <BR> │ p36 fig 3.3 (???) │ <BR> │ │ <BR> │ 图3-3 受父视窗限制的子视窗 │ <BR> └———————————————┘ <BR> <BR> 在实际的应用上,你可以将上层的视窗定义成几乎占住整个萤幕,就不必 <BR>担心子视窗有些部份会看不到了。 <BR> <BR> 另外一种方式就是把下拉式选单定义成为根视窗的子视窗,如此选单便可 <BR>以比应用视窗还大,如图3-4 <BR> <BR> ┌————————————————┐ <BR> │ p36 fig 3.4 (???) │ <BR> │ │ <BR> │ 图3-4 选单比用它的应用视窗还大 │ <BR> └————————————————┘ <BR> <BR> <BR> 3.3.3 X不是深植於作业系统 <BR> <BR> 不像其它大多数的系统,X并非深植(embedded)於作业系统中,而只是比 <BR>使用者层次稍高而已。更精确地说,X不需要深植於系统,虽然有些制造厂商 <BR>可能是为了效率(performance) 的理由将server和作业系统结合在一起,但不 <BR>深植於作业系统的结构有下列利益: <BR> <BR> .易於安装和改版,或甚至去除。这种工作不需要重新启始系统,也不会 <BR> 对其它应用程式造成干扰。 <BR> <BR> .第三集团很容易支援加强它的功能。例如你的制造厂商提供的系统不够 <BR> 好,你可以向别人买更好或更快的版本。 <BR> <BR> .X不会指定作业系统,因此成为一种标准,这也是第三集团发展软体的 <BR> 原动力。 <BR> <BR> .为了发展者利益。在server上发展工作时,当程式当掉只会当掉视窗系 <BR> 统,不会造成机器的损坏或作业系统核心的破坏,没有作业系统核心码 <BR> 的程式也较易除错。 <BR> <BR> <BR>3.4 结论 <BR> <BR> 在本章中我们描述了许多X提供的使用者介面,我们介绍了你用以管理 <BR>案头的程式 -- 视窗管理器的概念,也描述了被用来做使用者和client应用程 <BR>式间交互作用的设备程式。我们介绍了用来做client间通讯的性质结构,X视 <BR>窗的阶层结构对系统的影响,最後对视窗系统不深植於作业系统的好处做一摘 <BR>要。 <BR> <BR> 本章所强调的著眼点,在於针对你每天都用到的视窗系统的部份作一整体 <BR>性的概观,了解这些将帮助你学习得更快,更能好好地运用系统。 <BR> <BR> 本书第一部份 -- 系统概观就此结束,下一个部份将告诉你如何实际使用 <BR>系统。 <BR> <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -