MFC中的FormView和Dialog有什么区别?任何人都可以建议何时使用FormView以及何时使用Dialog?
答案 0 :(得分:4)
我必须尊重上述帖子。 CFormView和对话框之间没有区别。
CFormView是一个对话框,创建为无模式,由框架作为客户端托管,调整为框架大小调整大小。 它是从您必须提供的对话框资源创建的,就像任何独立对话框一样。对话框控件的所有消息处理程序都是相同的。
CFormView创建成员调用CreateDlg,传递构造函数加载的对话框模板。 CWnd CreateDialog,调用CreateDlgIndirect成员,该成员又调用CreateDialogIndirect API创建无模式对话框。
您还可以在另一个对话框中嵌入无模式对话框,它仍然是一个对话框。
答案 1 :(得分:2)
对话框应用程序只是显示一个对话框(以及您在对话框中放置的任何控件,以及从中弹出的任何其他控件等)。
FormView为您提供了一个相当普通的应用程序,主菜单等 - 但视图部分也可以保存控件。
如果你只想要一个对话框,你可以使用一个对话框;如果你想要(可能是多个)可以保存控件的视图,你可以使用一个formview。最大的区别在于,将对话框改为整个应用程序的基本特性,其中formview只是更改了一个视图 - 如果你有(例如)你也可以有其他(非形式)视图想要的。
答案 2 :(得分:2)
某人_笑脸
回答关于对话与CFormView的问题。
我很少使用基于对话框的应用程序;仅在需要简单任务但没有更复杂UI的开销的情况下。
大多数程序员从基于对话框的应用程序开始,在实现某些功能之后,通常会转变应用程序需要菜单,工具栏和状态栏,数据存储/处理对象,命令路由处理等等。
我建议使用不可调整大小的框架创建SDI应用程序。
您将看到一个对话框,并且MFC应用程序的所有功能都是免费的。如果您不需要文档支持,则不必使用文档支持。
答案 3 :(得分:1)
从编码器的角度来看,FormView支持以所见即所得的方式布局带有对话框资源的UI控件。因此,当使用大量控件创建视图时,FormView可能会有所帮助。
对话框不是视图。这是完全不同的。对话框是单独的窗口,通常在模态事件循环中呈现(或在特殊情况下无模式)。