C++ MFC:嵌入的子对话框未显示在父对话框中

C++ MFC:嵌入的子对话框未显示在父对话框中,c++,visual-c++,mfc,dialog,embed,C++,Visual C++,Mfc,Dialog,Embed,我遇到了一个演示如何使用MFC在父对话框中嵌入子对话框的示例。我正在使用Visual Studio 2015。我的设置如下。使用VisualStudioMFC应用程序向导创建一个新的MFC VisualC++项目,称为 MFCpplication 3/COD>,我选择了一个对话框的应用程序,其中MFC用于共享DLL。使用样板代码,我有一个简单的厚框对话框,没有最大化或最小化框 在我的资源视图中,我转到对话框编辑器编辑主对话框。我添加了一个中间有空白区域的图片控件,并将其命名为IDC\u STAT

我遇到了一个演示如何使用MFC在父对话框中嵌入子对话框的示例。我正在使用Visual Studio 2015。我的设置如下。使用VisualStudioMFC应用程序向导创建一个新的MFC VisualC++项目,称为<代码> MFCpplication 3/COD>,我选择了一个<强>对话框的应用程序,其中MFC用于共享DLL。使用样板代码,我有一个简单的厚框对话框,没有最大化或最小化框

在我的资源视图中,我转到对话框编辑器编辑主对话框。我添加了一个中间有空白区域的图片控件,并将其命名为
IDC\u STATIC
。这将只是用作我希望嵌入的“我的孩子”对话框的占位符。它看起来像:

仍然在资源视图中,我创建了一个新对话框。我叫它IDD_CHILD。我添加了一些组件。看起来是这样的:

现在回到解决方案资源管理器中,我使用添加类向导添加一个类,选择添加MFC类。类名是
CChildDialog
,基类是
CDialog
,我使用已经生成的
IDD\u子项作为对话框ID。它生成
.cpp
和相关的
.h
文件。在
CChildDialog
的构造函数中,我添加了对
Create
函数的调用,使构造函数成为:

CChildDialog::CChildDialog(CWnd* pParent /*=NULL*/)
    : CDialog(IDD_CHILD, pParent)
{
    Create(IDD_CHILD, pParent);
}
现在,我修改了创建项目时自动生成的对话框代码。在
CMFCApplication3Dlg.h
中,我添加了类型为
CChildDialog*
private
成员,名为
m\u childDlg
,并
包含相关头文件。在
CMFCApplication3Dlg.cpp
中,我在
return
语句之前将其添加到
OnInitDialog
函数中:

CRect rc;
GetDlgItem(IDC_STATIC)->GetWindowRect(rc);
ScreenToClient(&rc);

m_childDlg = new CChildDialog(this);
m_childDlg->MoveWindow(rc);
现在我构建解决方案,运行它,但它看起来就像第一张图片中的一样。子对话框的空白占位符点,但没有子对话框。我可能做错了什么?

事实证明(在撰写此问题时),我的问题的答案是在资源视图中需要设置两个属性。当打开子对话框(
IDD\u child
)时,我需要在“属性”窗格中设置以下属性:

  • 风格:儿童
  • 可见:真
(我不知道为什么Visible在这种情况下默认为FALSE)。做出这两个改变,瞧!我得到我的嵌入式对话框:

默认情况下,“可见”为
FALSE
,因为这些对话框常用于选项卡控件中,其中多个框占据相同的空间并根据需要显示,IMHO