在MFC中仅关闭子对话框,而不是父对象

时间:2017-09-17 17:58:01

标签: c++ mfc dialog modal-dialog

我是MFC世界的新手。我需要为旧应用程序提供一些基于对话框的操作。在那里,我遇到了一个显而易见的事情的麻烦,那就是我似乎无法找到一种方法来关闭我从父母(也是一个模态)调用的子对话框(模态)。在我试过的所有方式中,孩子和父母一直都会立即关闭。 这是我尝试过的: 我在VS 2012 Professional中创建了一个默认的MFC应用程序 ParentDlg.cpp

void ParentDlg::OnBnClickedOk()
{       
    ChildDlg childDlg;
    dialogOutput.DoModal(); 

    CDialogEx::OnOK();
}

在我的Child.cpp中关闭按钮(ID:IDCLOSE) ChildDlg.cpp

void ChildDlg::OnBnClickedClose()
{
    // TODO: Add your control notification handler code here
    EndDialog(IDCLOSE);
}

但这会关闭父级和子级,但是我只需要关闭子对话框(父对话框应该保持打开状态),因为我点击了子对话框中的“关闭”按钮。

简而言之,我喜欢“IDD_ABOUTBOX”对话框的默认IDOK按钮具有相同的行为,这也是一个“模态”对话框,当我单击其中的“确定”按钮时,它仅关闭“关于”框。

1 个答案:

答案 0 :(得分:0)

您只应将IDOK放在关闭按钮的ID属性中。只有子对话框才会关闭。您不应再创建事件处理程序,如果这样做,请删除事件处理程序。