windows:Windows/window-management
出自UXGuide.net
窗口管理
Window Management
目录 |
本文涵含了窗口初次显示在屏幕上的默认位置、相对于其他窗口的堆叠顺序(Z 顺序)、其初始大小、以及其显示会如何影响输入焦点。
对于下列设计规范:
- “顶级(top-level)”窗口指没有所有者窗口的,显示在任务栏上的窗口。例如:应用程序窗口。在 Windows Vista® 中,没有所有者窗口的对话框及属性页也被认为是顶级窗口。
- “被所有(owned)”窗口指具有“所有者(owner)”窗口且不显示在任务栏上的窗口。例如:模式对话框、无模式对话框。(译者注:为了行文便于理解,根据大部分读者的习惯,在整篇文档中会用“子窗口(owned window)”和“父窗口(owner window)”来代替。可能产生歧义时则特别注明。)
- “用户触发(user-initiated)”窗口指由于用户进行操作之后而直接显示的窗口。否则,由程序触发的称为“程序触发(program initiated)”窗口,由 Microsoft® Windows® 触发的则称为“系统触发(system initiated)”窗口。例如,选项对话框是用户触发的,而会议提醒则是程序触发的。
- “上下文窗口(contextual window)”是与其所源自的对象有着密切关系的用户触发窗口。例如,由快捷菜单或通知区域图标显示的窗口是上下文窗口,但由菜单栏显示的窗口则不是。
- “活动”显示器是指当前活动程序正在运行的所在显示器。
- “默认”显示器是指具有开始菜单、任务栏和通知区域的显示器。
设计理念
窗口管理是最基本的用户活动之一。在 Windows XP 中,窗口的默认尺寸往往较小,而且放置在屏幕的中央。这对于早期的单个低分辨率显示器来说还行,但对于现代的视频硬件来说则已不再适用。
Windows Vista 设计为支持现代的视频硬件,往往运行在比所支持的最小屏幕分辨率高的多的分辨率上,且可能具有多个显示器。这样做能够:
- 使用户尽可能受益于他们先进的硬件。
- 减少用户在长距离移动鼠标时的所需的操作。
- 使窗口位置更符合预期以易于查找。
设计规范
常规
- 支持 800x600 像素的最小 Windows 屏幕分辨率。对于那些必须可以工作在安全模式下或用于 Ultra-mobile PC(UMPC)及 Windows Media Center PC 的关键用户界面,应当支持 640 x 480 像素的屏幕分辨率。
- 要支持这些环境,即使当前屏幕分辨率低于你程序最小支持的分辨率,也仍然应当显示部分用户界面。该用户界面的功能可能受到限制。
- 为 1024x768 像素的屏幕分辨率优化可调整大小的窗口布局。
- 可缩放的窗口不再必须于右下角显示调整大小图元,因为:
- 窗口的每个边和角都是可以用于调整大小的,不仅仅是右下角。
- 该图元需要状态栏才能显示,而许多可缩放窗口并不具有状态栏。
- 可缩放窗口边框及调整大小鼠标指针与可缩放图元相比可以更加有效地表达窗口大小是可以调整的。
- 确保在 96 dpi 和 120 dpi 模式下测试你的窗口。检查布局问题、控件和窗口裁剪、以及图标和位图拉伸情况。
- 对于用于移动使用的程序,应为 120 dpi 进行优化。目前 Mobile PC 上普遍采用高 dpi 屏幕。
窗口尺寸
- 选择适合其内容的默认窗口尺寸。不要怕使用较大的初始窗口尺寸,只要你能够有效地利用空间即可。
- 尽可能使用可缩放窗口以避免出现滚动条或数据截断。可缩放窗口最适合于包含动态内容和列表的情况。
- 对于文本文档,考虑每行最多不超过 65 个字符以使文本易于阅读。(字符包括字母、标点和空格。)
- 对于固定大小的窗口:
- 必须完全可见,且其尺寸应当适合其工作区。
- 对于可缩放窗口:
- 可以为较高的分辨率进行优化,但在显示时应当根据需要按照实际屏幕分辨率进行调整。
- 当窗口逐渐增大时应当也逐渐显示更多的信息。确保窗口中至少有一部分或一个控件具有可缩放的内容。
- 如果当窗口小于特定尺寸后内容不再可用,则应当设置最小窗口尺寸。对于可缩放控件,应当根据其最小的可用尺寸设计最小可缩放元素尺寸,例如列表视图中的最小可用列宽。
- 考虑更改呈现方式以保正内容可以用于更小的尺寸。
-
- 在这个示例中,Windows Media Player® 在因窗口太小而标准形式不再适用时,改变了它的形式。
窗口位置
- 在下面的设计规范中,“居中”指在垂直方向上稍稍偏向显示器的上方,而不是严格地居中。从显示器/父窗口顶端到窗口顶端的空间占 45%,而显示器/父窗口底端到窗口底端的空间占 55%。这么做是因为人眼在自然状态下会偏向屏幕的上方。
-
- “居中”指在垂直方向上稍稍偏向显示器的上方。
- 如果窗口是上下文相关的,应当总是将其显示在靠近触发它的对象旁边。不过,应当把它放在靠旁边的位置(最好是向右下方一些),这样对象不会被窗口挡住。
-
- 对象属性显示在对象的旁边。
-
- 从通知区域触发的窗口则显示在通知区域的旁边。
- 将进度对话框放在一边,位于活动显示器的右下角。
-
- 将进度对话框放在右下角。
- 如果某窗口与当前上下文或用户操作无关,应将其放到当前鼠标位置之外。这将避免意外操作。
- 如果某窗口是顶级应用程序或文档,应当始终从显示器左上角开始按窗口原点进行层叠。如果是由当前活动程序创建的,则使用活动显示器;否则,则使用默认显示器。
-
- 从显示器左上角开始按窗口原点对顶级应用程序或文档进行层叠。
- 如果某窗口是顶级实用程序,应当<b>始终将其“居中”显示。</b>如果是由当前活动程序创建的,则使用活动显示器;否则,则使用默认显示器。
-
- 居中显示顶级实用程序窗口。
- 如果窗口是子窗口,初次显示时应将其“居中”显示在父窗口的上方。以后显示的时候,如果更为方便,应考虑将其显示在最后一次出现的位置(相对于父窗口)。
-
- 初始状况下,将子窗口居中显示在父窗口的上方。
- 对于无模式对话框来说,应当初始化显示在父窗口的上方。如果用户激活了父窗口,则可能会隐藏无模式对话框。
-
- 初始状况下,将无模式窗口显示在父窗口的上方以便于查找。
- 如果必要的话,应当调整初始位置以使整个对话框可以显示在目标监视器上。如果可缩放窗口比目标监视器要大,则应当缩小以适合。
窗口顺序(Z 顺序)
- 始终将子窗口显示在父窗口的上方。不要将子窗口放在父窗口的下方,因为绝大多数情况下用户无法看到它们。
- 尊重用户的 Z 顺序选择。当用户选中某窗口时,仅将该窗口所属的程序实例(该窗口加上所有父子窗口)移至 Z 顺序的顶端。不要改变其他任何窗口的顺序,比如同一个程序的其他独立进程。
窗口激活
- 尊重用户的窗口状态选择。如果某个已有的窗口需要用户关注,应闪烁其任务栏按钮三次以引起注意,并保持其高亮,但不要再进行其他操作。不要还原或激活该窗口。不要使用任何声音效果。相反,应当让用户在方便的时候激活窗口。
- 例外:如果窗口没有出现在任务栏上的话,应当将其移到所有其他窗口的顶端,并闪烁其标题栏。
- 还原主窗口时应当也还原其所有辅助窗口,即使这些辅助窗口自身也拥有任务栏按钮。当还原时,将辅助窗口置于主窗口的上方。
输入焦点
- 由用户触发显示的窗口应当具有输入焦点,但仅当窗口立即呈现时(5 秒之内)。一旦窗口呈现,即可具有输入焦点。
- 如果窗口呈现速度很慢(超过 5 秒),用户很可能会在等待过程中转而进行其他任务。此时夺取输入焦点可能会令人厌烦,尤其当出现不止一次时。
- 没有立即显示或由系统操作触发的窗口不应具有输入焦点。相反,应当以不带输入焦点的方式显示在顶端,让用户方便的时候再进行激活。
- 例外:凭据管理器(Credential Manager)。
保留(Persistence)
- 当对话框再次显示时,应当考虑以与上次访问相同的状态显示。当关闭时,保存使用的监视器、窗口尺寸、位置及状态(最大化或还原)。当再次显示时,恢复已保存的窗口尺寸、位置及状态,并使用合适的监视器。而且,考虑基于特定的用户,跨越各程序实例保留这些属性。例外:
- 对于用户可能每次都要从头开始使用的那些窗口来说,不要保存或保留这些属性。
- 对于可能会用于 Windows Tablet 和触摸技术的计算机来说,应当为纵横模式保存两份窗口状态。更多信息,参见Designing for Varying Display Sizes(英文)。
- 如果当前显示器配置使得窗口无法使用上次的状态显示的话:
- 尝试使用上次的显示器显示窗口。
- 如果窗口比显示器大,根据需要调整窗口的大小。
- 根据需要将窗口往左上角方向移,使其适合显示器。
- 如果上述步骤无法解决问题,则回到默认窗口位置设计规范。如果可能的话,考虑还原之前的尺寸。