MFC 中的非动态 Doc/View 架构使用

Posted

技术标签:

【中文标题】MFC 中的非动态 Doc/View 架构使用【英文标题】:Nondynamic Doc/View Architecture Usage in MFC 【发布时间】:2014-07-04 12:39:50 【问题描述】:

我有一个问题,其中有一堆数据将以两种不同的方式显示,它们应该始终与数据同步。从逻辑上讲,我想到了利用 mfc 所基于的 Doc/View 架构。 然而,MFC Doc/View 体系结构的使用强制通过框架动态创建文档、视图类,这是我不想要的,因为我必须自己在选项卡控件和 DockablePane 中创建视图。是否有一种解决方法可以让我利用 Doc/View 架构,这样我就可以在不使用 frameowrk 动态创建的情况下创建视图和相应的文档?就像qt的模型/视图技术一样!

【问题讨论】:

【参考方案1】:

您想要的可以在 MFC 文档/视图框架内完成。只是需要更多的研究。您可以通过将 NULL 作为视图类传递给 AddDocTemplate 来防止 MFC 在新文档中创建视图。然后,您可以使用 MFC 的动态创建,特别是 CreateObject 方法,在您喜欢的位置创建视图。以 CSplitterWnd::CreateView 的 MFC 源代码为例。

【讨论】:

【参考方案2】:

是的,您可以为同一个文档创建两个不同的视图。如果您总是想要两者,MFC 最直接支持的方法是带有静态拆分器的窗口,因此您在拆分器的每个窗格中都有一个视图。

虽然动态创建与其中的任何关系有什么关系,但(根本)不清楚。

【讨论】:

我所说的动态创建的意思是我不能自己创建视图并将其添加到选项卡控件中,视图实例将由框架为用户创建,当他单击新建时文档 ! .

以上是关于MFC 中的非动态 Doc/View 架构使用的主要内容,如果未能解决你的问题,请参考以下文章

关于MFC中App、MainFrame、Doc、View、ChildFrame的关系

如何在 MFC 应用程序首次启动时禁用自动文档/视图创建

哪位高手能告诉我这个新手下面那个关于MFC的简单问题

如何在MFC应用程序中添加文档菜单?

Observer模式详解--设计模式(15)

是否有可能/有必要在单独的线程中调用 OnDraw [MFC]