在基于对话的Vs SDI项目之间进行选择

时间:2009-03-19 02:14:22

标签: c++ visual-studio mfc

我是MFC的新手并不是全新的,但想在这个论坛上问专家,为什么选择一个项目而不是另一个。我希望这不是一个愚蠢的问题,因为我对MFC来说相对较新。

非常感谢

3 个答案:

答案 0 :(得分:9)

根据您的应用最适合的模板选择:

单文档界面(SDI) - 如果您的应用程序一次只需要处理1个文档或数据对象或数据集

示例:notepad.exe


多文档界面(MDI) - 如果您的应用程序需要一次处理多个文档或数据对象或数据集

示例:Visual Studio


基于对话 - 其他任何内容。

示例:计算器


无论您选择什么,您最终仍然拥有相同的功能,您可以以任何方式对其进行定制。因此,您不会限制自己开始的任何事情。

所有变体都附带CWinApp,它是您派生MFC应用程序的基类。

使用基于对话框的应用程序,您也可以使用CDialog开头。使用SDI应用程序,您也可以从CMainFrame,CDocument和CView开始。

答案 1 :(得分:2)

如果选择SDI项目,则会包含整个模型 - 视图 - 控制器框架。 你得到一个文档类(继承自CDocument),理想情况下应该包含所有数据,以及一个视图类(继承自CView)来处理显示。 您将获得一个已附加菜单的主机框架,并且您可以覆盖以保存和加载到文件的功能。

如果您有基于对话框的应用程序,那么您将获得一个对话框。而已。当然,这个对话框可以产生其他对象,但应用程序基本上由一个对话框组成。

如果您正在开发一个只执行一项任务的小应用程序,那么对话框应用程序是合适的,因为您不需要开销。

如果您正在开发一个用户将加载,编辑和保存数据的应用程序,那么SDI路径将更合适。

在回答了您的问题之后,我会礼貌地询问您是否有令人信服的理由选择MFC而不是Windows Forms。我相信MFC当时是一项出色的技术,但Visual Studio套件提供了更多高级工具(如果您准备沿着.NET路径前进)。

答案 2 :(得分:1)

如果“文档”是您的应用程序的正确比喻,请使用SDI或MDI。 (一次只能打开一个文档,如果不止一个,则可以打开多个。)当您考虑它时,文档隐喻确实不适合大多数应用程序。