在非模态对话框类中调用Oncancel()出现断言失败怎么办

Hyacinth_fff 2018-07-04 03:19:56
在非模态对话框类的OnInitDialog调用this->OnCancel();出现断言失败:
具体代码如下:
BOOL CCHILLDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//工程环境检查
Util ut;
if (!ut.IsPartEvn())
{
//CDialog::OnCancel();
this->OnCancel();
return FALSE;
}
return TRUE;
}
同时也重写了OnCancel函数:
void CCHILLDlg::OnCancel()
{
// TODO: 在此添加专用代码和/或调用基类
//CDialogEx::OnCancel();
CWnd::DestroyWindow();
}
...全文
169 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hyacinth_fff 2018-07-04
  • 打赏
  • 举报
回复
我是在OnInitDialog里调用,首先判断工程环境正不正确,如果不正确就不要显示对话框。
用这句PostMessage(WM_COMMAND, IDCANCEL, 0);确实解决了我的问题,多谢大神!
zgl7903 2018-07-04
  • 打赏
  • 举报
回复
OnInitDialog 是一个创建好对话框后的回调函数, 后续还有多个和窗口相关的操作, 因此不易在这里销毁,
但是可以投递消息 PostMessage(WM_COMMAND, IDCANCEL, 0);
djjs280 2018-07-04
  • 打赏
  • 举报
回复
不要调OnCancel,直接PostMessage WM_DESTROY

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧