多文档MDI应用程序和单文档SDI应用程序的主要不同在于:它支持多个文档、甚至多个文档类型。从用户的角度,他们有以下几点差别:
(1) MDI允许用户同时打开多个文档,而SDI只能打开一个文档。
(2) MDI应用程序甚至可以支持多种文档类型。例如word不仅支持.doc文件,还可以打开web页面文件.html等。
(3) MDI应用程序通常包含一个windows菜单,可以用它来切换显示同一个文档的不同视图,还可以切换显示不同文档的视图。
(4) SDI应用程序仅有一个框架窗口,而MDI应用程序有两个:一个是顶层框架窗口,另一个是文档窗口。前者和SDI的框架窗口类似,后者则用来包含打开文档的视图。
(5) SDI应用程序通常只有一个菜单,而MDI应用程序通常含有两个,一个在没有文档打开时显示,另一个在有文档打开时显示。
SDI和MDI在结构上的区别在于:
(1) MDI应用程序的框架窗口从CMDIFrameWnd类中派生,而SDI应用程序的框架窗口从CFrameWnd类中派生。
(2) MDI应用程序中包含文档视图的子窗口由CMDIChildWnd派生,而SDI应用程序不存在子框架窗口。
(3) MDI应用程序和SDI应用程序的文档模板类不同。MDI应用程序中使用CMultiDocTemplate类对象,而SDI应用程序使用CSingleDocTemplate类对象。
(4) MDI应用程序至少含有两个菜单资源,而SDI只有一个。