https://en.wikipedia.org/wiki/Single_document_interface

https://msdn.microsoft.com/en-us/library/b2kye6c4.aspx

SDI applications allow only one open document frame window at a time.

It's made up of one or more independent windows, which appears separately on the windows desktop.

An example of this would be a simple text document(Notepad).

MDI applications allow multiple document frame windows to be open in the same instance of an application.

An MDI application has a window within which multiple MDI child windows, which are frame windows themselves, can be opened, each containing a separate document.

In some applications, the child windows can be of different types, such as chart windows and spreadsheet电子制表软件 windows.

In that case, the menu bar can change as MDI child windows of different types are activated.

https://en.wikipedia.org/wiki/Multiple_document_interface

Comparison with single document interface

In the usability community, there has been much debate about whether the multiple document or single document interface is preferable.

Software companies have used both interfaces with mixed responses.

For example, Microsoft changed its Office applications from SDI to MDI mode and then back to SDI, although the degree of implementation varies from one component to another.

SDI can be more useful in cases where users switch more often between separate applications than among the windows of one application.

The disadvantage of MDI usually cited引用 is its lack of information about the currently opened windows:

In MDI applications, the application developer must provide a way to switch between documents or view a list of open windows, and the user might have to use an application-specific menu ("window list" or something similar) to switch between open documents.

This is in contrast to SDI applications, where the window manager's task bar or task manager displays the currently opened windows.

However, in recent years it has become increasingly common for MDI applications to use "tabs" to display the currently opened windows, which has made this criticism somewhat obsolete.

An interface in which tabs are used to manage open documents is referred to as a "tabbed document interface" (TDI).

Another option is "tiled" panes or windows, which make it easier to prevent content from overlapping重叠.

Some applications allow the user to switch between these modes at their choosing, depending on personal preference or the task at hand.

Nearly all graphical user interface toolkits to date provide at least one solution for designing MDIs, with an exception being Apple's Cocoa API.

The Java GUI toolkit, Swing, for instance, provides the classjavax.swing.JDesktopPane which serves as a container for individual frames (class javax.swing.JInternalFrame).

GTK+ lacks any standardized support for MDI.

Single document interface和Multiple document interface的更多相关文章

  1. document.documentElement.clientHeight 与 document.body.clientHeight(杜绝千篇一律的抄袭!!)

    document.documentElement.clientHeight 与 document.body.clientHeight用来获取页面可视高度我觉得有点问题.这两个应该不是一个东西. 页面中 ...

  2. 火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题

    一.先遇到document.body.scrollTop值为0的问题 做页面的时候可能会用到位置固定的层,读取document.body.scrollTop来设置层的位置,像这样, window.on ...

  3. [No000068]document.body.clientHeight 和 document.documentElement.clientHeight 的区别

    document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.docume ...

  4. 【Go入门教程6】interface(interface类型、interface值、空interface{}、嵌入interface、反射)

    interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服. 什么是interface 简单 ...

  5. document.body.scrollTop or document.documentElement.scrollTop

      用Javascript获取DOM节点相对于页面的绝对坐标时,需要计算当前页面的滚动距离,而这个值的获取又取决于浏览器. 在Firefox或Chrome浏览器的控制台可以查看document.bod ...

  6. document.body.clientHeight和 document.documentElement.clientHeight 的区别

    1.javascript中的 document.body.clientHeight 和 document.documentElement.clientHeight 的区别 在往同事负责的页面添加我的功 ...

  7. 详解;(function ($,window,document,undefined){...})(jQuery,window,document);

    1.代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后语法错误. 2.匿名函数(function(){})();:由于Javascript执行表达式是从圆括号里面 ...

  8. document.body.clientHeight与document.documentElement.clientHeight

    当你的网页有: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  9. document.body.scrollTop vs document.documentElement.scrollTop && document.body.scrollHeight vs document.documentElement.scrollHeight

    FireFox下 document.body.scrollHeight || document.documentElement.scrollHeight;//等价 document.body.scro ...

随机推荐

  1. iOS CoreData 开发之数据模型关系

    接着上一篇,上一篇中,我们简单的实现了一个用户实体,本次添加一个用户信息实体,与用户实体相关联,关系为1:1. 新建一个实体UserInfo:

  2. JS——缓慢动画封装

    在知道如何获取内嵌式和外链式的标签属性值之后,我们再次封装缓慢动画: 单个属性 <!DOCTYPE html> <html> <head lang="en&qu ...

  3. SQL基本操作——日期函数

    SQL日期:当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配.只要数据包含的只是日期部分,运行查询就不会出问题.但是,如果涉及时间,情况就有点复杂了.在讨论日期查 ...

  4. ddrmenu

    <%@ Register TagPrefix="dnn" TagName="MENU" Src="~/DesktopModules/DDRMen ...

  5. cookie和sessionStorage 、localStorage 对比

    相同点:都存储在客户端 不同点:1.存储大小 cookie数据大小不能超过4k. sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或 ...

  6. Android中Webview使用经验总结

    很早前就喜欢在Android中使用Webview组件结合JS来做应用,总结了一些不错的小经验,在这里持续更新,自己备忘,也希望给其他需要的同学一些参考- 1.添加权限 要用Webview,确认你在** ...

  7. PHP 之CURL请求封装GET、POST、PUT、DELETE

    /** * @Description: curl请求 * @Author: Yang * @param $url * @param null $data * @param string $method ...

  8. CodeCombat代码全记录(Python学习利器)--Kithgard地牢代码1

    Kithgard地牢注意:在调用函数时,要在函数的后面加上括号内容,否则在python中,将不会认为你在调用这个函数内容,而你的英雄将像木头一样站在原地不会执行上左下右的移动!!! hero.move ...

  9. Navicat 连接docker mysql报错

    解决办法: docker exec -it dc10e8b328d7 bashmysql -u root -p 输入密码 use mysql; ALTER USER 'root'@'%' IDENTI ...

  10. 【特 性】Attribute

    1 AttributeUsage [AttributeUsageAttribute(AttributeTargets.All, AllowMultiple = true, Inherited = tr ...