MFC:Emdedded子对话框未显示在父对话框中

时间:2017-05-16 02:05:06

标签: c++ visual-c++ mfc dialog embed

我遇到了tutorial,显示了如何使用MFC在父对话框中嵌入子对话框。我正在使用Visual Studio 2015.我的设置如下。使用Visual Studio MFC应用程序向导创建名为TextView titleTextView = (TextView) viewHolder.getView(android.R.id.text1); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Drawable leftDrawable = AppCompatResources .getDrawable(context, R.drawable.ic_tickbox); titleTextView.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, null, null, null); } else { //Safely create our VectorDrawable on pre-L android versions. Drawable leftDrawable = VectorDrawableCompat .create(context.getResources(), R.drawable.ic_tickbox, null); titleTextView.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, null, null, null); } 的新MFC Visual C ++项目,我选择基于对话框的应用程序,其中MFC用于共享DLL 。使用样板代码,我有一个简单的厚框对话框,没有最大化或最小化框。

在我的资源视图中,我转到Dialog编辑器编辑主对话框。我在中心添加了一个带有空白区域的图片控件,并将其命名为MFCApplication3。这将仅用作我希望嵌入的子对话框的占位符。它看起来像:

MFC Basic Dialog with Placeholder

仍然在资源视图中,我创建了一个新的Dialog。我称之为IDD_CHILD。我添加了一些组件。它看起来像这样:

MFC Dialog no border

现在回到解决方案资源管理器中,我使用Add Class向导添加一个类,选择添加MFC类。类名为IDC_STATIC,基类为CChildDialog,我使用已生成的CDialog作为对话ID。它会生成IDD_CHILD和关联的.cpp文件。在.h的构造函数中,我添加了对CChildDialog函数的调用,因此构造函数变为:

Create

现在我修改了创建项目时自动生成的对话框代码。在CChildDialog::CChildDialog(CWnd* pParent /*=NULL*/) : CDialog(IDD_CHILD, pParent) { Create(IDD_CHILD, pParent); } 中,我添加了一个名为CMFCApplication3Dlg.h的{​​{1}} private成员,以及CChildDialog*相关的头文件。在m_childDlg中,我将此添加到#include语句之前的CMFCApplication3Dlg.cpp函数中:

OnInitDialog

现在我构建解决方案,运行它,但它看起来像在第一张图片中。子对话框的空白占位符点,但没有子对话框。我能做错什么?

1 个答案:

答案 0 :(得分:4)

事实证明(在编写这个问题时)我的问题的答案是我需要在资源视图中设置的两个属性。当我打开子对话框(return)时,在属性窗格中,我需要设置以下属性:

  • 风格:儿童
  • 可见:TRUE

(我不确定为什么Visible在这种情况下默认为FALSE)。做出这两个改变,瞧!我得到了嵌入式对话框:

MFC Dialog with Child Dialog

相关问题