我是MFC世界的新手。我需要为旧应用程序提供一些基于对话框的操作。在那里我遇到了一个非常明显的事情,那就是我似乎无法找到一种方法来关闭我从父母(也是Modal)调用的子对话框(Modal)。在我尝试的所有方式中,孩子和父母都会一次关闭。 这里是我的尝试: 我在VS创建一个默认的MFC应用程序2012专业 ParentDlg.cpp在MFC中只关闭子对话框,而不是父对象
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)这是真实的代码吗? 'ParentDlg :: OnBnClickedOk'中未定义'dialogOutput'。 2)如果它是'childDlg',为什么你在'DoModal'调用后立即调用'CDialogEx :: OnOK',如果你不想关闭'ParentDlg'呢?它在[文档](https://msdn.microsoft.com/en-us/library/132s802t.aspx#cdialog__onok)中解释,调用基础处理程序将关闭对话框。 –
@AlgirdasPreidžius是的,应该有一直ChildDlg,我纠正了我的帖子。并删除默认的CDialogEx :: OnOK工作:)我忽略了,因为当我在那里创建'click'事件时,MFC正在写这行。非常感谢。 –