在MFC(VS2005)中显示非模态子对话框的正确方法是什么?

时间:2010-04-14 11:05:15

标签: mfc

我希望能够为不同的控件组显示子对话框,而不是将所有内容放在一个大对话框中。这个想法是这些不是自由浮动的子对话框,如浮动工具栏,但会显示没有标题栏,它们的位置锁定到父对话框...所以当您拖动父对话框时,任何打开的子项也会被拖动。 / p>

注意:这些子窗口不在父对话框内,它们通常会“粘在”它的边缘。

在MFC / VC ++ 2005中,最好的方法是什么?为了进行测试,我目前使用CMainDlg设置了基于MFC Dialog的标准应用程序设置,然后我创建了一个“小部件对话框”CWidgetDlg。到目前为止,我有一个成员变量CWidgetDlg MainDlg::m_Widget和一个CMainDlg上的按钮,其中包含一个像

这样的处理程序
CMainDlg::OnDisplayWidgetBtn()
{
 m_Widget.ShowWindow(TRUE);
}

但是当然m_Widget没有设置HWND,我想要记住正确的方法吗?对于对话框控件,我可以使用DDX,但是对于子对话框呢?

这是一种合理的方法,还是有更好的,更自动化的方式?

3 个答案:

答案 0 :(得分:3)

尝试:

// IDD_WIDGET is the resource id for your widget dialog
m_Widget.Create(IDD_WIDGET, this);

不要忘记将样式属性设置为child

答案 1 :(得分:0)

  

而不是把一切都放在一个大的   对话,我正在寻找能够   显示单独的对话框   控制组。这个想法就是这些   不是自由浮动的儿童对话   像浮动工具栏,但会   显示没有标题栏,他们的   位置锁定到父级   对话框...以便拖动父级   对话框也会拖动任何打开的子项。

我想你可以选择多文档界面。您可以创建自己的对话框,添加文档模板并使用它们以获得适当的功能。子项将保留在一个主父框架内,并且只要拖动父项,它就会沿着父项移动。

答案 2 :(得分:0)

您可以使用标签对话框。这里有一些示例代码...... http://www.codeproject.com/KB/dialog/embedded_dialog.aspx

相关问题