【问题标题】:MS Word is an MDI or SDIMS Word 是 MDI 或 SDI
【发布时间】:2011-10-11 17:17:51
【问题描述】:

我对 MSWord 是 MDI 或 SDI 应用程序感到困惑。查看应用程序,我确实相信它是一个 SDI 应用程序,但有些人强烈“相信”它是 MDI 的一个例子。在 windows 中使用任务管理器后,应用程序选项卡会列出当前打开的文档的所有实例。但是,进程选项卡中只有一个进程。

由于所有文件都有相同的流程,这让我觉得它是一个 MDI。但同时,Applications 选项卡列出了所有打开的文档,这让我觉得它是一个 SDI。你们对此怎么看?请给出您宝贵而详细的答案。

【问题讨论】:

  • 这似乎不是一个编程问题。
  • MDI/SDI 与流程几乎没有任何关系。它与如何显示多个窗口有关。不管怎样,这似乎根本不是一个编程问题,所以我投票支持迁移它。

标签: windows visual-c++ windows-7 ms-word


【解决方案1】:


我从Chris Ryan 发现了一些关于此的更多信息,我在这里分享:


这取决于你所说的 MDI 是什么意思。

MS-Word 确实有多个文档和一个界面,但它不符合 MDI 应用程序的经典定义,因为它不使用 MDICLIENT 窗口类来管理子框架。

有关 MDICLIENT 的示例,请参阅:
ftp://ftp.charlespetzold.com/ProgWin5/Chap19/MDIDemo/MDIDemo.c
ftp://ftp.charlespetzold.com/ProgWin5/Chap19/MDIDemo/Release/MDIDemo.exe

即使是在主框架内有子窗口的旧版 Word 和 Excel,在技术上也不是 MDI。他们看起来像,但他们没有使用 MDICLIENT。 MS 使用了一个名为 Software Dialog Manager 的专有窗口库。使用了 SDM,因此可以在多个平台上使用通用应用程序代码库:Windows、OS/2 和 Mac。他们所要做的就是为该平台重新编译并链接特定于平台的 SDM 库。

此链接略谈 SDM,但未提及 MDICLIENT
http://msdn.microsoft.com/en-us/library/windows/desktop/dd317997(v=vs.85).aspx

【讨论】:

  • MDI与应用程序的编写方式无关,老的MS字肯定是MDI。 MDICLIENT 只是实现 MDI 的一种方式......不是唯一的方式。
【解决方案2】:

如果您在选项中取消选中Show all documents in the taskbar,Word 是一个经典的 MDI 应用程序(甚至是 Word 2010)。

如果您保持选中状态,则它是一个具有多个根窗口的 SDI 应用程序。

【讨论】:

  • 如果我这样做 在任务栏中显示所有文档,所有文档将是分开的,否则它们将成为同一个父窗口的一部分。我同意。但令人困惑的是**(1)**相同的文件在打开时可以从SDI切换到MDI,反之亦然**(2)**如果所有文件都有相同的PID,SDI是怎么回事?我相信对于 SDI,每个窗口都是一个过程。
  • SDI 不要求每个窗口都是自己的进程。
  • @RaymondChen,请分享您对 Chris 的 infon 的想法
  • 首先您需要定义 MDI/SDI 的含义,然后才能讨论 Word 是否为一体。 Ryan 的定义似乎是“使用 MDICLIENT 窗口类”,这是一个非常狭隘的定义。
【解决方案3】:

根据微软的说法,它是一个 MDI 应用程序:http://msdn.microsoft.com/en-us/library/aa263481(v=vs.60).aspx

根据您的设置和版本,它可能是 MDI 或 SDI。在旧版本中它是 MDI,如果您使用“在任务栏中显示所有文档”选项;否则为 SDI。

【讨论】:

    【解决方案4】:

    老实说,在我测试之前,我自己并没有意识到这部分:

    在 Windows 中使用任务管理器后,应用程序选项卡会列出当前打开的文档的所有实例。但是,“进程”选项卡中只有一个进程。

    感谢您并在帖子中 +1。在进一步探索中,我发现了一些可能会进一步阐明的东西。我使用的是 2007,但我想它也适用于 2010。我点击了控制菜单(当你点击左上角的图标时弹出的小菜单——在微软决定重绘其界面之前,它曾被称为控制菜单)。您会找到一个“单词选项”按钮。单击它,在之后弹出的对话框中,转到“高级”选项卡。向下滚动到“显示”部分。找到“在任务栏中显示所有窗口”复选框,我猜它会被选中。取消选中它。您会看到不再有多个窗口(对应于每个文档)。此外,在任务管理器中,即使在“应用程序”选项卡中,您也只会看到一个实例。

    有了这个,我坚信 Word 仍然是一个 MDI。哦,顺便说一句,如果您想在更改这些“高级”选项后查看打开的每个文档,您可能需要转到“查看”菜单并选择“并排查看”选项。

    【讨论】:

    • 是的,这让我也想到了 MDI 应用程序。但是,通过取消选中“全部显示...”复选框来“转向 SDI”是什么意思
    猜你喜欢
    • 2011-08-15
    • 2011-01-18
    • 2014-05-23
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    相关资源
    最近更新 更多