如何在大型机中显示CFormView?

时间:2009-12-23 23:31:38

标签: c++ visual-studio-2008 user-interface mfc

我创建了一个没有doc / view支持的SDI MFC应用程序。 MFC模板为我提供了一个带有空白窗口的应用程序(和菜单等)

我想在该主窗口上显示我的CFormView对象。 (根据gui编辑器制作的dlg)

我该怎么做? CreateWindow和showwindow似乎并不是所有需要的。我找到的所有网页似乎都在讨论MDI以及我应用中没有的其他内容。

  • 这种观点永远不会改变。它将有一个列表框控件,就是这样。如何显示新的表单视图?

  • 此外,如何在其上显示一个带有一个控件的浮动窗口? (DLG box和DoModal()在这里对我不起作用。)

1 个答案:

答案 0 :(得分:1)

  • 为您的CFormView提供WS_CHILD样式
  • 将其创建为MODELESS对话框,将应用程序窗口作为父窗口
  • 调整大小以适合父级的客户区域,或调整父级大小以适应它。

WS_CHILD样式不是对话框模板的默认样式,但您可以添加它。 这将导致对话框在创建它时显示在主框架窗口的客户区域内。

您可能还想将IsDialogMessage()的来电添加到消息泵。这需要让TAB键按照您在对话框中的预期方式运行。

编辑---- 我不是MFC程序员,所以我只能猜测你将如何在MFC中实现这一点。

据推测,您仍然有对话框模板,因此您将进入.RC文件 并删除WS_POPUP并将WS_CHILD样式添加到模板声明中。像这样:

IDD_WHATEVER DIALOG DISCARDABLE  0, 0, 275, 217
STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE
CAPTION "General"
FONT 8, "MS Sans Serif"
BEGIN
   // etc
END

使用CreateDialog而不是DialogBox在Win32中创建无模式对话框 MFC使用Create()而不是DoModal()