【发布时间】:2017-09-17 17:58:00
【问题描述】:
我是 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) 这是真实的代码吗?
dialogOutput在ParentDlg::OnBnClickedOk中未定义。 2) 如果它是childDlg- 如果您不想关闭ParentDlg,为什么在DoModal呼叫之后立即呼叫CDialogEx::OnOK?在documentation 中有解释,调用基本处理程序将关闭对话框.. -
@AlgirdasPreidžius 是的,那应该是 ChildDlg,我在帖子中更正了。并且删除默认的 CDialogEx::OnOK 有效:) 我忽略了这一点,因为当我在那里创建“点击”事件时 MFC 正在编写该行。非常感谢。
标签: c++ mfc dialog modal-dialog