我制作了一个非常简单的MFC应用程序,当我点击一个按钮时调用一个Dialog,并在5秒后发送一个MessageBox。
问题是,当我在第二个对话框中并从父对象中解除MessageBox时(不是单击MessageBox的OK按钮。我单击第二个对话框的空白部分)我无法关闭此对话框(第二个对话框) )当我点击OK或CANCEL按钮时。
为什么?
代码的一部分:
Main Dlg: BOOL Cmult_rc_testDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon SetTimer(1, 5000, NULL); return TRUE; // return TRUE unless you set the focus to a control } void Cmult_rc_testDlg::OnBnClickedButton1() { CDlg1 a; a.DoModal(); } void Cmult_rc_testDlg::OnTimer(UINT_PTR nIDEvent) { KillTimer(nIDEvent); MessageBox(L"oi"); CDialog::OnTimer(nIDEvent); }
第二个Dialog是MFC向导生成的默认代码。
答案 0 :(得分:0)
不确定我完全理解你的问题。 。 。听起来你还在尝试关闭父窗口时仍然显示消息框?
如果是这种情况,父窗口拥有消息框,并且在消息框关闭之前不允许获取焦点。你可以尝试使用
::MessageBox(NULL, L"oi", L"MessageBox", MB_OK);
而不是MessageBox,它将创建一个消息框,允许您仍然重新关注原始窗口(这意味着使用MessageBox的全局命名空间版本,这是Windows本机调用而不是MFC)。