6

尽管 MDI 被认为是有害的,但一些应用程序(甚至是 MS Office、Adobe 应用程序)仍然以纯粹的形式使用它,或者将其作为与选项卡式/IDE 式界面的混合体使用。

MDI 接口是否仍然适用于某些应用程序?

我正在考虑一个应用程序,其中一个通常一次处理多个文档,并且经常希望有多个文档一边查看或在它们之间复制/粘贴。

一个例子是Origin,其中一个项目中有多个工作表和图形窗口;选项卡式或类似 IDE 的界面会因大量来回切换而更加不方便。

在mac上,一个应用程序有多个顶级窗口来解决这个问题是很自然和方便的,如果不使用MDI,Windows中的首选方式是什么?

4

8 回答 8

17

MDI的缺点如下:

  • 它通常需要用户学习和理解一组更复杂的窗口关系。

  • 许多简单的操作可能需要一个两步过程。例如,将期望的窗口带到前台可能需要用户首先将容器窗口向前移动,然后再将容器窗口中的右侧主窗口向前移动。调整窗口大小或最大化窗口可能意味着首先调整容器窗口,然后调整其中的主窗口。

  • 如果打开了多个容器窗口,用户可能会忘记哪个具有所需的主窗口,需要进行繁琐的搜索。

  • 用户很容易对最大化、图标化、分层和关闭窗口的双重方式感到困惑。例如,他们可能会关闭整个应用程序而不是容器窗口中的一个窗口。或者他们可能会“丢失”一个窗口,因为他们在容器窗口中将其图标化而没有意识到这一点。

  • 用户受限于他或她的窗口可以采用的尺寸和位置。假设我想同时查看一个应用程序的 3 个窗口和另一个应用程序的 1 个窗口。使用 SDI,我可以让每个窗口占据屏幕的一个象限,但使用 MDI 无法做到这一点。如果我想让 MDI 中的一个窗口大而另一个窗口小怎么办?我必须使容器窗口变大以容纳大窗口(它遮挡其他应用程序的窗口),但是在看孩子时会浪费空间。

请注意,所有这些缺点也适用于选项卡式文档界面 (TDI),选项卡式界面还有一个缺点,即用户无法并排查看同一容器窗口中的两个文档。选项卡还会在您的窗口中添加混乱并消耗空间。但是,总体 TDI 的问题往往比 MDI 少,因此它们可能更适合特殊情况(继续阅读)

综上所述,很难想到任何情况下都可以使用 MDI。它并不比 SDI 更好,同时增加了更多的复杂性和导航开销,并且与其他应用程序的窗口配合不佳。

应用程序没有理由不能拥有多个顶级 SDI 窗口。即使使用像 Origin 这样的应用程序,只要项目在每个窗口中都得到很好的识别,我也没有看到项目分布在多个 SDI 窗口中的问题。SDI 还允许不同类型的窗口(例如,图形与工作表)具有不同的菜单和工具栏,而不是根据活动窗口隐藏或禁用项目(前者令人困惑,后者浪费空间)。

SDI 为您的用户提供了比 MDI 或 TDI 更大的灵活性。用户可以重叠或最大化窗口,并将任务栏/停靠栏用作事实上的选项卡界面。用户可以选择调整窗口大小和重新定位窗口,以便一次查看多个窗口。每个窗口都可以独立调整大小以优化屏幕空间。无论 MDI 或 TDI 有什么优势,您都可以增强 SDI 以使其也具有这些优势(例如,提供一个缩略图菜单,使窗口之间的切换比使用任务栏更快,并且与选择选项卡相当,或者提供一个图标化所有一键打开应用程序的窗口)。

除非您有令人信服的理由使用 TDI,否则请使用 SDI 以实现这种灵活性。令人信服的原因包括以下的一些子集:

  • 每个选项卡都用于不相关的高阶任务,用户不会频繁地在选项卡之间切换或跨选项卡比较信息。

  • 您正在与非常低端的用户一起工作,他们对任务栏/停靠栏和多个窗口一无所知或感到困惑,并且不知道如何调整窗口大小(对于此类用户来说,引人注目的选项卡图像似乎比任务栏更好)。

  • 您预计通常会有大量选项卡(例如,4 个或更多),并且您可以以比操作系统更有效的方式控制它们的显示,如果它们是任务栏/停靠栏上的 SDI 窗口(例如,关于订单和标签)。

  • 使用 SDI,您会遇到用户将非活动窗口的工具栏或调色板与活动窗口混淆的问题。

  • 选项卡的数量是固定的并且永久打开(例如,当每个选项卡是同一数据对象的不同组件时)。用户不必为尝试区分关闭选项卡和关闭整个窗口而烦恼;找出要导航到的窗口不是问题,因为所有窗口都有相同的选项卡。

  • 实际上只有一种方法可以正确安排任务数据,用户之间或他们实际使用应用程序的目的没有差异。您最好使用选项卡和主-详细信息窗格的组合为用户设置它,而不是依靠用户来正确排列和调整 SDI 窗口的大小。

总之,考虑到您的用户能力、应用程序复杂性和任务结构,如果您的应用程序能够比用户/操作系统更好地管理内容显示,则使用 TDI,否则使用 SDI。

于 2009-01-28T04:07:05.720 回答
5

老式的 MDI(在哪里切换文档,你必须通过 Windows 菜单)很烦人。较新的 MDI(如 Opera 和 Mozilla 中的选项卡)使文档之间的切换非常容易,并且似乎已被很好地接受。如果您在没有 MDI 的情况下打开多个文档,它们也不会弄乱您的任务栏。

于 2009-01-28T00:59:29.640 回答
5

请注意,您使用的示例(MS Office 和 Adob​​e 应用程序)是大型程序并且具有很多功能。用户将处理该程序,并且在程序的大部分生命周期中只处理该程序。

较新版本的 MS Office (2007) 和 Adob​​e Photoshop (CS4) 分别使用多个窗口和选项卡。

请注意,在 Windows 7 中,MDI 可能会更加不受欢迎,因为 Microsoft 的 API 提供了额外的选项卡功能(尽管您不需要严格使用选项卡 - MDI 窗口可以工作,但对用户来说会比平时更混乱)。

于 2009-01-28T01:07:34.367 回答
3

MDI 的主要优点是当您想要同时跟踪两个或多个窗口时,这些窗口需要组合在一起。例如,一个窗口中有一个正在运行的进程,但您需要在另一个窗口上工作,MDI 将是最理想的。

于 2011-07-24T04:28:03.103 回答
2

我同意 slavy13(旧 MDI = 坏,新 MDI = 好得多)。但不要使用 Microsoft Excel 之类的程序作为模型。哎呀!无论您打开了多少电子表格(这可能是也可能不是您的偏好),您的桌面上都会有一个窗口。但是您打开的每个文档都会有一个任务栏图标。同样,您的 Alt+Tab 窗口对于您打开的每个文档都有一个图标。另外,其中还有一个附加图标,仅用于“Excel”,可将您带到恰好是“当前”的任何文档。所以,是的,像 Mozilla 一样做你的 MDI。或者至少让您的用户可以选择切换到更简洁的风格。

为了更简洁地回答你的问题,我觉得答案是肯定的,MDI 在某些情况下仍然是合适的。但是,在所有事情中,适度是关键。

于 2009-01-28T01:06:09.097 回答
1

看来,多个顶级窗口是要走的路。至于是否应该有一个全局应用程序实例或每个文档一个,我认为取决于您。它对用户不可见。

于 2009-01-28T00:56:41.830 回答
1

MDI 只有一个好处:

由于一次运行多个实例的高昂成本,使用大量资源的程序(例如 Adob​​e Photoshop)通常具有 MDI。

但是你不应该一开始就开发消耗大量资源的程序。

于 2009-01-28T00:57:33.233 回答
1

如果大量屏幕空间将用于在许多窗口之间共享的内容,我可以看到 MDI 的一个优势。将此类材料放在封闭窗口的顶部或侧面可能比在每个 SDI 窗口中重复出现或出现在与 SDI 窗口完全分开的窗口中更合乎逻辑。例如,一个聊天程序可能有一个状态窗格和一个控制窗格。让它们在视觉上与聊天窗口相关联可能比将它们作为独立窗口更好。

于 2010-09-05T00:00:39.150 回答