窗口管理

注意

此设计指南是为 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 像素优化可调整大小的窗口布局。 以仍然正常运行的方式自动调整这些窗口的大小,以降低屏幕分辨率。
  • 请务必在 800x600 像素、120 dpi(125%)(1024x768 像素)和 120x900 像素的 144 dpi(150%)中测试你的窗口。 检查布局问题,例如剪裁控件、文本和窗口,以及图标和位图的拉伸。
  • 对于触摸和移动使用方案的程序,请针对 120 dpi 进行优化。 高 dpi 屏幕目前在触摸和移动电脑上普遍存在。
  • 可调整大小的窗口不能再在右下角显示大小字形,因为:
    • 窗口的所有边和边缘都是可调整大小的,而不仅仅是右下角。
    • 字形需要状态栏才能显示,但许多可调整大小的窗口不提供状态栏。
    • 可调整大小的窗口边框和调整指针大小在传达窗口的大小比调整字形更有效。

标题栏控件

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

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

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

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

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

窗口大小

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

屏幕截图

在此示例中,当窗口对于标准格式而言太小时,Windows Media Player 会更改其格式。

窗口位置

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

    窗口的 图略高于中心

    “居中”意味着将垂直放置稍微偏向监视器顶部。

  • 如果窗口是上下文窗口,请始终将其显示在从中启动的对象附近。 将源对象放出方式,以便窗口未覆盖源对象。

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

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

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

    通知区域窗口图

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

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

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

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

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

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

    右下角进度栏的 图

    将进度对话框置于右下角。

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

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

    从左上角图

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

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

    以监视器为中心图

    居中顶级实用工具窗口。

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

    以所有者窗口为中心图

    最初在所有者窗口顶部居中拥有的窗口。

  • 对于无模式对话,请始终在所有者窗口顶部最初显示,使其易于查找。 但是,如果用户激活所有者窗口,这可能会掩盖无模式对话框。

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

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

窗口顺序 (Z 顺序)

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

窗口激活

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

输入焦点

  • 由用户启动的作显示的 Windows 应采用输入焦点,但前提是窗口立即呈现(在 5 秒内)。 呈现窗口后,它可以获取输入焦点一次。
    • 如果窗口呈现缓慢(超过 5 秒),则用户在等待时可能会执行另一个任务。 在这一点上关注将是一种烦恼,尤其是在多次完成时。
  • 系统启动的作不会立即显示或显示 Windows 不应采用输入焦点。 相反,在没有焦点的情况下显示在顶部,并让用户在准备就绪时激活它们。
    • 异常: 凭据管理器。

坚持

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