VC++中想要在关闭时弹出确认对话框应该怎么做
如果响应WM_CLOSE消息voidCtextDlg::OnClose(){if(IDOK==MessageBox(_T("您确定要退出吗"),NULL,MB_OKCAN...
如果响应WM_CLOSE消息
void CtextDlg::OnClose()
{
if(IDOK == MessageBox(_T("您确定要退出吗"),NULL, MB_OKCANCEL))
{
CDialogEx::OnDestroy();
}
}
那么在点击确定和取消按钮退出程序时不会确认
如果相应WM_DESTROY消息
void CtextDlg::OnDestroy()
{
if(IDOK == MessageBox(_T("您确定要退出吗"),NULL, MB_OKCANCEL))
{
CDialogEx::OnDestroy();
}
}
则会在对话框销毁之后才弹出确认对话框
到底应该怎么办? 展开
void CtextDlg::OnClose()
{
if(IDOK == MessageBox(_T("您确定要退出吗"),NULL, MB_OKCANCEL))
{
CDialogEx::OnDestroy();
}
}
那么在点击确定和取消按钮退出程序时不会确认
如果相应WM_DESTROY消息
void CtextDlg::OnDestroy()
{
if(IDOK == MessageBox(_T("您确定要退出吗"),NULL, MB_OKCANCEL))
{
CDialogEx::OnDestroy();
}
}
则会在对话框销毁之后才弹出确认对话框
到底应该怎么办? 展开
2个回答
展开全部
这里关键要看,对话框是模态还是非模态。
模态对话框的确定和取消按钮,调用的是EndDialog来结束对话框,不会触发WM_CLOSE消息,因此,要在两个按钮响应消息OnOK和OnCancel中进行确认提示,以OnOK为例:
void CDialog1::OnOK()
{
if(IDOK==AfxMessageBox(_T("您确定要退出吗"),MB_OKCANCEL))
CDialogEx::OnOK();
}
需要注意的是,即使是模态对话框,如果在标题栏中增加了系统按钮,那么“红叉”按钮的关闭还是需要响应WM_CLOSE消息,也就是你同样需要在OnClose里面做这个确认提示。
非模态对话框,会屏蔽OnOK和OnCancel中的基类调用,只需要响应WM_CLOSE即可。
展开全部
对于对话框项目,这种退出确认需要在CDialog的OnOK和OnCancel这两个虚函数中执行
例如:
void CtextDlg::OnOK()
{
if (IDYES == MessageBox(_T("您确定要退出吗 ?"), NULL, MB_YESNO))
{
CDialog::OnOK();
}
}
void CtextDlg::OnCancel()
{
if (IDYES == MessageBox(_T("您确定要退出吗 ?"), NULL, MB_YESNO))
{
CDialog::OnCancel();
}
}
例如:
void CtextDlg::OnOK()
{
if (IDYES == MessageBox(_T("您确定要退出吗 ?"), NULL, MB_YESNO))
{
CDialog::OnOK();
}
}
void CtextDlg::OnCancel()
{
if (IDYES == MessageBox(_T("您确定要退出吗 ?"), NULL, MB_YESNO))
{
CDialog::OnCancel();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询