Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1039148
  • 博文数量: 836
  • 博客积分: 43880
  • 博客等级: 大将
  • 技术积分: 5485
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-20 17:36
文章分类

全部博文(836)

文章存档

2011年(1)

2008年(835)

我的朋友

分类: LINUX

2008-08-20 18:27:02


我们将观察重点摆到系统控制的使用者介面,例如,系统如何显示有人使用它,以及包含那些结构等。 X设计的目标之一就是能支援许多不同型式的使用者介面,一般其它的视窗系统提供特殊的交谈方法,而X则提供一般性的架构,让系统建立者(systembuilder)据以建造所需的交谈的风格。例如,在一个X系统中你可藉从选单中选一个动作来构建视窗,但其他对视窗的操作则全靠滑鼠来做,这种弹性允许系统开发者(developers)完全在X的基础上产生全新的介面,也因为介面并未内建於视窗系统,因此使用者在任何时刻根据他们特别的需求可选用适当的介面。例如,对於完成一些相同的工作--建立、移动、重定大小萤幕上的视窗,初学者较老手喜欢简单的系统,而X可分别提供最适他们的使用者介面。 使用者介面分为两个部份: 管理介面:命令最高层的视窗如何在萤幕上建构或重建构(re-configured),也就是说,如何管理你的案头。 应用介面:决定你和应用程式间交谈的”风格”(style):你如何利用视窗系统的设备程式来控制应用程式及输入资料给它。 管理介面:视窗管理器 管理介面(managementinterface)是系统的一部份,用以控制你萤幕上最上层的视窗(换句话说:如何重新建构你的案头),这个部份在系统中称之为视窗管理器(windowmanager),它的功能有改变视窗的大小或位置、将视窗在堆叠(stack)中重新安排位置、或将视窗改变成表徵图(icon)等等。 在X中,视窗管理器只是另一个client程式而已,它以及系统介面的发展,和server是完全分开的,因此你可以更换它们,这类似於Unix系统中的shell命令列直译器(interpreter):shell只是一个使用者处理程式(process),如果你改变它,你也改变了系统的使用者介面。 手动的和自动的视窗管理器 有两类的视窗管理器:手动的和自动的。手动的视窗管理器,视窗在萤幕上的位置和大小完全由使用者控制,手动的视窗管理器只是使用者用来完成工作的工具,大部份的手动视窗管理器允许应用视窗重叠。 相对的,自动的视窗管理器尽可能的由它自己来控制案头,对於萤幕的布置尽可能让使用者少插手。它在新建立一个视窗时自动决定视窗的大小和位置,和当视窗移动时如何重新安排其馀的视窗,通常自动的视窗管理器将萤幕分成一块块像磁砖一样(tile)的区域,也就是说安排应用视窗彼此不会重叠,而且尽量占用最多的萤幕空间。 手动的视窗管理器如何工作--攫取(Grabbing) 通常当你告诉手动的视窗管理器你要完成什麽动作时,是藉著使用选单或者结合了按滑鼠的按钮和移动指标,例如,重新摆放一个视窗的位置,你可以移动指标进入视窗,按住左边的按钮,移动指标然後在新位置松开按钮,视窗管理器是如何知道这些滑鼠"事件"的意图的?或是换个角度,server是如何知道"事件"是来自应用视窗或视窗管理器? 答案是由视窗管理器告知server有哪些特定的"事件"(碰触按钮等等)需要被送达,这和哪一个视窗发生的无关,这种处理称之为攫取(Grabbing),视窗管理器可以指定哪一个滑鼠按钮希望被攫取,而这攫取发生在滑鼠的按钮被按下且键盘上一些特定的键(一般称为修饰键(modifer))也被按住(例如当CONTROL和SHIFT两个键被按住时且滑鼠中间的按钮被按下),当按钮被按下时,攫取开始动作,server送出所有滑鼠的事件(包括滑鼠的移动事件)到视窗管理器直到按钮再度松开,视窗管理器把这些"事件"的资料解释成来自使用者的指令来工作。以移动视窗为例,视窗管理器在按钮按下时被告知指标的位置,而当按钮松开时再度被告知,对指标的位移做一些简单计算便可据以移动视窗。 有一件事需要使用者配合,那就是滑鼠和修饰键组合而成的攫取不应该为应用程式所知道,所以必需确定视窗管理器这种攫取键的组合不会和应用程式冲突,大多数的视窗管理器可以很容易的定义这些攫取的组合键,而保留给它自己使用。 1 2 3 下一页>>


下载本文示例代码
阅读(539) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~