3

MFC中FormView和Dialog有什么区别?任何人都可以建议何时使用 FormView 以及何时使用 Dialog?

4

4 回答 4

4

我不得不恭敬地不同意上面的帖子。CFormView 和对话框之间没有区别

CFormView 是一个对话框创建为无模式并由框架作为客户端托管,调整大小作为框架调整大小。它是从您必须提供的对话框资源创建的,就像任何独立对话框一样。对话框控件的所有消息处理程序都是相同的。

CFormView Create 成员调用 CreateDlg,传递由构造函数加载的对话框模板。CWnd CreateDialog,调用 CreateDlgIndirect 成员,该成员又调用 CreateDialogIndirect API 创建无模式对话框。

您还可以在另一个对话框中嵌入无模式对话框,它仍然是一个对话框。

于 2013-01-04T13:12:14.777 回答
2

对话框应用程序显示一个对话框(以及您在对话框中放置的任何控件,以及您从中弹出的任何其他控件等)

FormView 为您提供了一个带有主菜单等的相当普通的应用程序——但视图部分也可以包含控件。

如果你只想要一个对话框,你会使用一个对话框,如果你想要(可能是多个)可以保存控件的视图,你会使用一个表单视图。最大的区别在于,将其设置为对话框会改变整个应用程序的基本性质,其中表单视图仅更改一个视图——如果您愿意,(例如)您还可以拥有其他(非表单)视图。

于 2013-01-04T04:31:44.147 回答
2

某人笑脸

回答有关对话框与 CFormView 的问题。

我很少使用基于对话框的应用程序;仅在需要简单任务而无需更复杂 UI 开销的情况下。

大多数程序员从基于对话框的应用程序开始,在实现一些功能之后,通常会发现应用程序需要菜单和工具栏和状态栏、数据存储/处理对象、命令路由处理等。

我建议使用不可调整大小的框架创建 SDI 应用程序。

您将免费获得 MFC 应用程序的对话框外观和所有功能。如果您不需要文档支持,则不必使用文档支持。

于 2013-01-04T13:19:34.900 回答
1

从编码人员的角度来看,FormView 支持以所见即所得的方式使用对话框资源布局 UI 控件。因此,当使用大量控件创建视图时,FormView 可能会有所帮助。

对话框不是视图。这是完全不同的。对话框是单独的窗口,通常在模式事件循环中呈现(或在特殊情况下无模式)。

于 2013-01-04T04:45:40.930 回答