【问题标题】:Document-view architecture in MFCMFC 中的文档视图体系结构
【发布时间】:2014-01-07 11:38:27
【问题描述】:

我有一个关于使用 MFC 的内置文档视图架构的必要性的问题。我得到了一个旧的基于对话框的项目,我必须用一个框架替换主对话框并添加一个 ribon。它有一种文档视图架构,在没有内置类的情况下创建,我更愿意在新版本中重用它。但是,如果我试图绕过通常由项目向导生成的 CDoc 和 CView 派生类,我只能看到一个没有功能区的空窗口。那么......我真的必须实现这些内置的文档视图架构,还是我只是错过了一些东西?难道不能使用项目中已有的代码吗?

【问题讨论】:

  • 将功能区与标准文档/视图一起使用不是强制性的。你有什么问题?
  • 我的任务是添加一个功能区。我的问题是如何正确实现架构。如果我不使用文档和视图的内置类(这似乎与功能区无关:/),则窗口保持空白。另一方面,该程序处理大量数据,这些数据不存储在文件中。它是 COM 端口上的输入,所以我不太确定内置函数是否可以处理它:/
  • 我的意思是:从旧的 MFC 版本移植可能会很痛苦。为什么不创建一个新项目(使用功能区但不支持文档/视图)然后开始复制并粘贴到旧项目中?基类、定义等等……
  • 那是很多代码。它的负载:D
  • 是的,但是您只需要更改几个类(当然,菜单/工具栏中的所有内容都必须移动到功能区...)。 AFAIK 对于这种移植没有简单的解决方案。

标签: c++ visual-studio-2010 mfc frame document-view


【解决方案1】:

如果您将在框架中使用多个视图和文档,那么建议使用现有框架的设计(CDocument、CView 等)。

如果您只为功能区执行此操作,并且只是将控件从对话框移动到框架,那么您可以跳过标准的文档/视图架构并直接实例化功能区控件。

如果您不必重新编写大量代码,那么我建议您使用标准的 Document/View 架构,因为从长远来看,这将节省大量时间,使您的应用程序可扩展至更大多文档设计等

【讨论】:

  • 项目为 +1 GB :/
  • 可以使用 CDoc/CView 作为原始类/对象的非常薄的包装器。不要尝试“合并”而是“包装”。
  • 嗯,我想我今天试一试。谢谢!
  • 我可以将文档留空(类似于虚拟类)并使用旧文件代替它吗?
  • 只有一个文档视图,在视图中使用对话框。基本上你会使用 CFormView。在该表单视图中,您可以使用您正在使用的现有对话模板。就是这样。您将所有对话框处理程序(按钮单击等)复制并粘贴到视图代码中,所有内容都将按原样工作。
猜你喜欢
  • 2016-03-25
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 2014-10-16
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多