Child Dialogs

Click here to change the theme.

The following describes how to create a dialog template that can be used as a child in another dialog and how to create the child dialog.

The Dialog Template

If you create a dialog template using the default provided by the resource editor, then you probably want to delete the "Ok" and "Cancel" buttons, depending on your requirements. Assuming the child will always be in the same place in the parent dialog you can specify the position in the "x" and "y" fields of the dialog properties. Then ensure that the following styles are selected or unselected:

  • Style: Child (important)
  • Unselect "Title Bar"
  • Select "Control" (so the child works as if it is part of the parent)
  • Border: Thin (optional; use whatever border, or no border, as appropriate)
  • Select "Visible" (optional; ShowWindow() can be used instead)

Then use the ClassWizard to create a class for the dialog template. I will be using CChildDlg as the class name.

Creating the Dialog

OnInitDialog for the parent dialog is probably the best place to create the child. It must be created as a modeless dialog using Create(). Be sure to include the header for the child dialog in the parent dialog's cpp file. Then in the parent dialog's class create an instance of the child dialog, such as in the following:

CChildDlg m_ChildDlg;

Then in OnInitDialog the following will create the dialog:

m_ChildDlg.Create(IDD_CHILD_DIALOG, this);