单文档与多文档应用程序有何区别?

计算机作业

单文档应用程序:单文档界面(SDI)应用程序

多文档应用程序:多文档界面 (MDI) 应用程序

区别:

1、窗口数量不同

单文档界面(SDI)应用程序:只有一个窗口

多文档界面 (MDI) 应用程序:有多个子窗口

2、同时处理多个窗体的方式不同

单文档界面(SDI)应用程序:不能同时处理多个窗体,要想同时处理多个窗体,需要打开应用程序的多个副本。需要不断的实例化多个Form,然后通过show()方法打开。

多文档界面 (MDI) 应用程序:可以同时显示多个文档,每个文档显示在各自的窗口中,MDI 应用程序中常有包含子菜单的“窗口”菜单项,用于在窗口或文档之间进行切换。

扩展资料

1、创建MDI父窗体

MDI 父窗体是包含 MDI 子窗口的窗体,子窗口是用户与 MDI 应用程序进行交互的副窗口,要将窗体指定为子窗口的 MDI 容器只需将窗体的IsMDIContainer 属性设置为 True,建议将 WindowState 属性设置为 Maximized,因为当父窗体最大化时操作 MDI 子窗口最为容易。MDI 父窗体的边缘将采用系统颜色。

2、创建MDI子窗体

多文档界面 (MDI) 应用程序的基本元素是MDI 子窗体,因为它们是用户交互的中心。

例如:创建子窗体的代码如下:

FormnewMDIChild = new Form();

// 设置该窗体的父窗体

newMDIChild.MdiParent= this;

// 显示新建窗体

newMDIChild.Show();

参考资料:百度百科 - MDI

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-05

一、打开方式不同

1、单文档:又称SDI,只能打开一个文档。

2、多文档:又称MDI,允许用户同时打开多个文档。

二、支持文档类型不同

1、单文档:只支持一种文档类型,如记事本只能打开txt文件。

2、多文档:可支持多种文档类型,如word不仅支持.doc文件,同时可打开web页面文件.html。


三、内容不同

1、单文档:仅有一个菜单,有一个框架窗口。

2、多文档:包含一个windows菜单,可用来切换显示不同文档。


参考资料来源:百度百科-MDI

参考资料来源:百度百科-SDI

本回答被网友采纳
第2个回答  推荐于2017-10-15
  单文档与多文档应用程序的区别:
  1.单文档只能进行一份文档或图片的操作;
  2.多文档可以用多个窗口显示不同的信息,进行不同的任务,有多个视图环境,可以同时操作多个文件。

 MFC单文档应用程序结构分析

  1、新建一个MFC的单文档应用程序
  很简单,打开VC 6.0(惭愧,都这个时间了,我还在使用6.0~~),“文件”—> “新建”—> “工程”—> “MFC AppWizard(exe)”,然后输入工程名称,下一步的时候选择“单文档”,再下一步、下一步……完成即可。
  我新建的工程名称是Writer,这里先说明一下,下面的分析中都会出现。

  2、主要程序类分析
  应用程序类 CWriterApp
  CWriterApp类继承于CWinApp,负责管理整个应用程序。每一个MFC Windows应用程序对应一个CWinApp派生类的对象,这个对象可以在Writer.cpp中找到。

  应用程序CWriterApp的一个重要初始化函数InitInstance,它用于初始化应用程序。在这个方法的是现在中,有这样一段代码,用来注册单文档的文档窗口、SDI架构主窗体和视图窗口:
  CSingleDocTemplate* pDocTemplate;
  pDocTemplate = new CSingleDocTemplate(
  IDR_MAINFRAME,
  RUNTIME_CLASS(CWriterDoc),
  RUNTIME_CLASS(CMainFrame), // main SDI frame window
  RUNTIME_CLASS(CWriterView));
  AddDocTemplate(pDocTemplate);
  这段代码指明了文档类、架构类和视图类,从而构造了一个单文档视图结构的应用程序。

  3、文档类CWriterDoc
  文档类是用来存取数据的。其中的Seriallize方法可以存取数据。
  4、视图类CWriterView
  视图类负责显示程序数据及用户才操作。可以理解为程序和用户的接口(UI),这个接口设计的好坏直接影响到用户的体验。ps. 非常貌似UI的概念。
  在这个类中,最常用的函数是OnDraw,这个函数的作用是重绘文档显示的内容,当窗口首次生成、改变大小、拖动的时候,程序都会调用这个方法来重绘界面。另外一个常用的函数是GetDocumnet,这个函用来获取文档的指针,便于访问文档中的数据。函数OnDraw的代码如下:
  void CWriterView::OnDraw(CDC* pDC)
  {
  CWriterDoc* pDoc = GetDocument();
  ASSERT_VALID(pDoc);
  // TODO: add draw code for native data here
  }
  在这个函数中,首先调用GetDocument函数获取到一个文档指针,从而通过pDoc 访问文档中的数据。

  5、框架窗口类 CMainFrame
  框架窗口类负责管理窗口中的菜单、工具栏、状态栏等。通常在OnCreat函数中创建工具栏、状态栏……代码不再贴出。

  6、ps. 添加一个事件:“视图”—> “建立类向导”,在弹出的窗口中选择工程、选择类名称,在Messages中选择要添加的消息,选中后点击“Add Function”完成添加, 再点击“Edit Code”进行代码编辑。这里所添加的是消息映射(Message Maps),在Windows编程中,就是所谓的事件。
第3个回答  2013-07-22
单文档只能进行一份文档或图片的操作,就是你不能同时在一个程序打开两个文件
多文档可以用多个窗口显示不同的信息,进行不同的任务,有多个视图环境,可以同时操作多个文件
第4个回答  2013-07-22
单文档程序打开多个文件会产生多个进程;
多文档程序打开多个文件只需一个进程。