菜鸟MFC编程小问题?
来源:百度知道 编辑:UC知道 时间:2024/05/22 13:05:45
加上else return;返回,别让他执行到底
对话框对象的默认OnOK()和OnCancel()函数会调用父类CDialog::OnOK()和CDialog::OnCancel()函数。
这两个函数会调用CDialog::DestroyWindow()函数开始销毁窗口。
在CWnd::DestroyWindow()中,会发送WM_DESTROY,WM_NCDESTROY消息给窗口进行窗口销毁。
由上述分析可见你在WM_DESTROY消息的处理函数OnDestroy()中加入提示对话框不是最合适的位置。
关键的是如果MessageBox返回值不是IDOK时,应立即返回FALSE,而不能继续执行CWnd::DestroyWindow()销毁窗口。
应该重载你的对话框类(假设为CMyDlg)的DestroyWindow()函数。
BOOL CMyDlg::DestroyWindow()
{
if(IDYES==MessageBox(_T("是否退出?"),_T("关闭提示"),MB_YESNO)
return CDialog::DestroyWindow();
else
return FALSE;
}
重载 OnCancel, 在这个函数中试试:
void CYourDlg::OnCancel(void)
{
if (IDYES == MessageBox(...))
CDialog::OnCancel();
}
void CXXDlg::OnBnClickedCancel()
{
// TODO: Add your control notification handler code here
CString message(确定退出吗?);
if (AfxMessageBox(message,1)==IDOK){
OnCancel();
}
}
捕捉WM_CLOSE消息