【问题标题】:Choosing between a Dialog Based Vs SDI Projects在基于对话的项目与 SDI 项目之间进行选择
【发布时间】:2009-03-19 02:14:21
【问题描述】:

我对 MFC 并不陌生,但我想问问这个论坛上的专家,为什么会选择一个项目而不是另一个项目。我希望这不是一个愚蠢的问题,因为我对 MFC 比较陌生。

非常感谢

【问题讨论】:

    标签: c++ visual-studio mfc


    【解决方案1】:

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

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

    示例:notepad.exe


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

    示例:Visual Studio


    基于对话框 - 用于其他任何事情。

    示例:计算器


    无论您选择什么,最终您仍然可以使用相同的功能,并且您可以以任何方式对其进行自定义。所以你不会把自己限制在你开始的任何事情上。

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

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

    【讨论】:

    • Chrome 让您可以选择拥有多个顶级窗口以及在它们之间移动选项卡,作为一种混合 SDI/MDI 选项。我不确定 Visual Studio/MFC 是否开箱即用。
    【解决方案2】:

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

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

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

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

    在回答了您的问题后,我会礼貌地询问您选择 MFC 而不是 Windows 窗体的原因是否令人信​​服。我相信 MFC 在当时是一项出色的技术,但 Visual Studio 套件提供了更高级的工具(如果您准备走 .NET 路径)。

    【讨论】:

    • 对不起,我一定错过了你的问题。不幸的是,我不知道或没有任何有关 Windows 窗体的知识或培训。也许这可能是一些值得研究的事情。我开始使用 Visual C++ 和 MFC 进行培训。
    • “今天”?您是否注意到 MS 继续在 Visual Studio Suite 中添加到 MFC 的进步?听起来好像您过早地停用了 MFC。我更喜欢 MFC 和非托管 C++,而不是 Windows 窗体和 .NET 托管语言。称我为老派,但我的非托管 MFC 应用程序胜过托管 .NET 应用程序。我的客户为性能付费,而不是开发人员的“便利”——这可能需要更多的努力,但最终结果对他们来说是值得的。
    【解决方案3】:

    如果“文档”是您应用程序的正确比喻,请使用 SDI 或 MDI。 (一次只能打开一个文档,如果多于一个,则可以打开多个文档。)仔细想想,文档隐喻确实不适用于大多数应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 2012-09-14
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      相关资源
      最近更新 更多