窗口管理

注意

此设计指南是为 Windows 7 创建的,尚未针对较新版本的 Windows 进行更新。 大部分指南原则上仍然适用,但演示和示例并不反映我们 当前的设计指南

本文介绍最初在屏幕上显示时窗口的默认位置、窗口相对于其他窗口 (Z 顺序) 的堆叠顺序、其初始大小以及其显示如何影响输入焦点。

有关以下准则:

  • 顶级窗口没有所有者窗口,显示在任务栏上。 示例:应用程序窗口。 在 Windows Vista 及更高版本中,没有所有者窗口和属性表的对话框也被视为顶级对话框。
  • 拥有的窗口具有所有者窗口,并且不会显示在任务栏上。 示例:模式对话框、无模式对话框。
  • 用户启动的窗口显示为用户操作的直接结果。 否则,如果程序启动,则为程序启动;如果由 Microsoft Windows 启动,则为系统启动。 例如,“选项”对话框由用户发起,但会议提醒是程序启动的。
  • 上下文窗口是用户启动的窗口,它与启动它的 对象有很强的关系。 例如,上下文菜单或通知区域图标显示的窗口是上下文的,但菜单栏显示的窗口不是。
  • 活动监视器是运行活动程序的监视器。
  • 默认监视器是具有“开始”菜单、任务栏和通知区域的监视器。

设计概念

窗口管理是最基本的用户活动之一。 在 Windows Vista 之前,窗口通常被赋予较小的默认大小,并放置在屏幕中间。 此方法适用于较旧的单一低分辨率监视器,但不适用于新式视频硬件。

Windows 旨在支持新式视频硬件,这些硬件通常以明显高于受支持的最低屏幕分辨率的分辨率运行,并且可能具有多个监视器。 这会:

  • 允许用户充分利用其高级硬件。
  • 在更远的距离上移动鼠标所需的工作量更少。
  • 使窗口放置更具可预测性,因此更易于查找。

支持的最小屏幕分辨率

Windows 支持的最低 有效屏幕分辨率 为 800x600 像素。 这意味着固定大小的窗口应以最小分辨率 (完全显示,同时为任务栏保留空间) ,但可调整大小的窗口可以优化为 1024x768 像素的有效分辨率,只要它们在最低分辨率下正常运行。

虽然目前 Windows 电脑最常见的物理屏幕分辨率为 1024x768 像素或更大,但面向 800x600 像素的 Windows 可以:

  • 可与所有新式硬件(包括小型笔记本电脑)配合使用。
  • 支持高 dpi (每英寸点数) 设置。
  • 支持较大字体的辅助功能。
  • 支持全球使用的硬件。

选择支持的最低分辨率需要达到适当的平衡。 以更高的分辨率为目标会导致相当一部分新式硬件体验不理想,而以较低分辨率为目标会阻止设计人员充分利用可用的屏幕空间。

如果你认为目标用户使用的分辨率明显高于 Windows 最低分辨率,则可以使用缩放良好的可调整大小的窗口来设计程序以充分利用额外的屏幕空间。

准则

常规

  • 支持最低 Windows 有效分辨率 800x600 像素。 对于关键用户界面 (必须在安全模式下工作的 UI) ,支持 640x480 像素的有效分辨率。 请务必通过为随任务栏显示的窗口保留 48 个垂直 相对像素 来考虑任务栏使用的空间。
  • 优化可调整大小的窗口布局,实现 1024x768 像素的有效分辨率。 以仍然正常工作的方式自动调整这些窗口的大小,以降低屏幕分辨率。
  • 请务必以 96 dpi (100%) 800x600 像素、120 dpi (125%) 1024x768 像素、144 dpi (150%) 1200x900 像素测试你的窗口。 检查布局问题,例如控件、文本和窗口的剪辑以及图标和位图的拉伸。
  • 对于具有触摸和移动使用方案的程序,请针对 120 dpi 进行优化。 高 dpi 屏幕目前在触摸和移动电脑上很普遍。
  • 可调整大小的窗口不再必须在右下角显示调整大小字形 ,因为:
    • 窗口的所有侧边和边缘都是可调整大小的,而不仅仅是右下角。
    • 字形需要状态栏才能显示,但许多可调整大小的窗口不提供状态栏。
    • 与调整大小字形相比,可调整大小的窗口边框和调整大小指针在传达窗口可调整大小时更为有效。

标题栏控件

使用标题栏控件,如下所示:

  • 接近了。 具有标准窗口框架的所有主窗口和辅助窗口都应在标题栏上具有“关闭”按钮。 单击“关闭”将取消或关闭窗口。

没有关闭按钮的对话框的屏幕截图

在此示例中,对话框在标题栏中没有“关闭”按钮。

  • 尽量缩减。 所有主窗口和长时间运行的无模式辅助窗口 ((如进度对话框) )都应具有“最小化”按钮。 单击“最小化”会将窗口缩小到其任务栏按钮。 因此,可最小化的窗口需要标题栏图标。
  • 最大化/还原。 所有可调整大小的窗口都应具有“最大化/还原”按钮。 单击“最大化”将显示其最大大小的窗口,对于大多数窗口,该窗口是全屏的;而单击“还原”将显示其先前大小的窗口。 但是,某些窗口不会受益于使用全屏,因此这些窗口应最大化到其最大有用大小。

窗口大小

  • 选择适合其内容的默认窗口大小。 如果能有效地使用空间,请不要害怕使用更大的初始窗口大小。
  • 尽可能使用可调整大小的窗口,以避免滚动条和截断的数据。 具有动态内容和列表的 Windows 受益于可调整大小的窗口。
  • 对于文本文档,请考虑最大行长 65 个字符 ,以使文本易于阅读。 (字符包括字母、标点和空格。)
  • 固定大小的窗口:
    • 必须完全可见,并调整大小以适应工作区。
  • 可调整大小的窗口:
    • 可以针对更高的分辨率进行优化,但在显示时根据需要缩小到实际屏幕分辨率。
    • 对于逐渐增大的窗口大小,必须逐渐显示更多信息。 确保至少有一个窗口部分或控件具有可调整大小的内容。
    • 应避免最大化或接近最大化的默认还原大小。 相反,请选择通常最有用的默认大小,而不会全屏显示。 假设用户将最大化窗口,而不是调整大小使其全屏。
    • 如果低于该大小的内容不再可用,则应设置最小窗口大小。 对于可调整大小的控件,请将最小可调整大小的元素大小设置为其最小功能大小,例如列表视图中的最小功能列宽。
    • 如果这样做会使内容在较小尺寸下可用,则应更改演示文稿。

媒体播放器按钮的屏幕截图

在此示例中,Windows 媒体播放器当窗口变得太小而无法采用标准格式时更改其格式。

窗口位置

  • 对于以下准则,“居中”是指将垂直位置稍微偏向监视器顶部,而不是完全放在中间。 将 45% 的空间放在监视器/所有者顶部和窗口顶部之间,将 55% 的空间放在监视器/所有者的底部和窗口底部之间。 这样做是因为眼睛自然偏向屏幕顶部。

    位于中心上方的窗口图

    “居中”是指将垂直位置稍微偏向到监视器顶部。

  • 如果窗口是上下文窗口,请始终将其显示在启动窗口的对象附近。 将它放在外,使源对象不受窗口的覆盖。

    • 如果使用鼠标显示,则尽可能将它向下和向右偏移。

    位于对象右侧的上下文窗口的图

    在启动它的对象附近显示上下文窗口。

    通知区域窗口的图

    从通知区域启动的 Windows 图标显示在通知区域附近。

  • 如果使用笔显示,请尽可能放置它,以免被用户的手覆盖。 对于右手用户,向左显示;否则显示在右侧。

    放置在对象左侧的上下文窗口的图

    使用笔时,还显示上下文窗口,以便用户手不会覆盖它们。

  • 开发 人员: 可以使用 GetMessageExtraInfo API 区分鼠标事件和笔事件。 可以使用 SystemParametersInfo API 和SPI_GETMENUDROPALIGNMENT来确定用户的感。

  • 将进度对话框放在活动监视器的右下角。

    右下角进度栏的图

    将进度对话框放在右下角。

  • 如果窗口与当前上下文或用户操作无关,请将其置于远离当前指针位置的位置。 这样做可以防止意外交互。

  • 如果窗口是顶级应用程序或文档,请始终从监视器的左上角级联其原点。 如果由活动程序创建,请使用活动监视器;否则,请使用默认监视器。

    从左上角级联的三个窗口的图

    在监视器左上角外级联顶级应用程序或文档窗口。

  • 如果窗口是顶级实用工具,请始终在监视器中“居中”显示它。 如果由活动程序创建,请使用活动监视器;否则,请使用默认监视器。

    以监视器为中心的实用工具窗口的图

    居中顶级实用工具窗口。

  • 如果窗口是拥有的窗口,则最初将其“居中”显示在所有者窗口顶部。 对于后续显示,请考虑将其显示在相对于所有者窗口的最后位置 () 如果这样做可能更方便。

    在所有者窗口上居中自有窗口的图

    最初将拥有的窗口居中位于所有者窗口顶部。

  • 对于无模式对话框,始终最初显示在所有者窗口顶部,以便于查找。 但是,如果用户激活所有者窗口,则可能会遮盖无模式对话框。

    所有者窗口上无模式对话框的图

    最初在所有者窗口顶部显示无模式对话框,以便于查找。

  • 如有必要,请调整初始位置,以便整个窗口在目标监视器中可见。 如果可调整大小的窗口大于目标监视器,请将其缩小以适应。

窗口顺序 (Z 顺序)

  • 始终将拥有的窗口放在其所有者窗口的顶部。 切勿将拥有的窗口置于其所有者窗口下,因为用户很可能看不到它们。
  • 尊重用户的 Z 顺序选择。 当用户选择一个窗口时,仅将与该程序实例关联的窗口 (窗口加上) 的任何所有者或拥有的窗口置于 Z 顺序的顶部。 不要更改任何其他窗口的顺序,例如同一程序的独立实例。

窗口激活

  • 尊重用户的窗口状态选择。 如果现有窗口需要注意,请闪烁任务栏按钮三次以吸引注意力并使其突出显示,但不要执行任何其他操作。 不要还原或激活窗口。 请勿使用任何声音效果。 相反,让用户在准备就绪时激活窗口。
    • 例外: 如果该窗口未显示在任务栏上,请将其置于所有其他窗口的顶部,并改为闪烁其标题栏。
  • 还原主窗口还应还原其所有辅助窗口,即使这些辅助窗口有自己的任务栏按钮。 还原时,将辅助窗口放在主窗口的顶部。

输入焦点

  • 用户启动的操作显示的 Windows 应获取输入焦点,但前提是 窗口在 5 秒内立即呈现 () 。 呈现窗口后,它可以获取一次输入焦点。
    • 如果窗口呈现缓慢 (超过 5 秒) ,则用户在等待时可能会执行另一个任务。 此时集中注意力将是一个烦恼,特别是如果做不止一次。
  • 系统启动的操作未立即显示或显示的 Windows 不应获取输入焦点。 相反,在顶部显示没有焦点,并让用户在准备就绪时激活它们。
    • 例外: 凭据管理器。

持久性

  • 重新显示窗口时,请考虑以与上次访问的相同状态显示它。 关闭时,保存使用的监视器、窗口大小、位置和状态 (最大化与还原) 。 重新显示时,使用适当的监视器还原已保存的窗口大小、位置和状态。 此外,请考虑按用户使这些属性在程序实例之间持久保存。 异常:
    • 当这些属性的使用使用户更可能希望完全重新启动时,不要保存或使其在 Windows 中保留。
    • 对于可能用于Windows Tablet and Touch Technology计算机上的程序,请为横向模式和纵向模式保存两个窗口状态。 有关详细信息,请参阅 针对不同的显示大小进行设计
  • 如果当前监视器配置阻止使用其最后状态显示窗口:
    • 尝试使用窗口的最后一个监视器显示窗口。
    • 如果窗口大于监视器,请根据需要调整窗口大小。
    • 根据需要将位置向左上角移动以适合监视器。
    • 如果上述步骤无法解决问题,还原默认窗口放置指南。 如果可能,请考虑还原以前的大小。