在View中创建的NewDialog对象,DoModal()正常,在结束时(OK/CANCEL/直接关闭窗口)出现问题:
Debug Assertion Failed!
重载OnOK(),删掉CDialog::OnOK();,换成
EndDialog(1);
仍然还是Debug Assertion Failed
请教大虾,代码如下:
/////////////////CView.cpp
void COpenimage4View::On123() //一个菜单选项
{
   if(flag==0){                  //flag设为View成员,标志是否已经创建Dialog对象
     NewDialog newdialog;
 flag=1;
 newdialog.m_updata=0;       //Dialog成员初始化
 newdialog.m_leftdata=0;
 newdialog.m_rightdata=0;
 newdialog.m_downdata=0;
 newdialog.DoModal();  
 newdialog.UpdateData(TRUE);
}
    else{
NewDialog* viewdialog=(NewDialog*)GetParent()->GetDlgItem(IDD_DIALOG1);
viewdialog->DoModal();
}
}
/////////////NewDialog.cpp
void NewDialog::OnOK() 
{
// TODO: Add extra validation here
EndDialog(1);
//CDialog::OnOK();
}

解决方案 »

  1.   

      if(flag==0){                  //flag设为View成员,标志是否已经创建Dialog对象 
        NewDialog newdialog; 
    flag=1; 
    newdialog.m_updata=0;      //Dialog成员初始化 
    newdialog.m_leftdata=0; 
    newdialog.m_rightdata=0; 
    newdialog.m_downdata=0; 
    newdialog.DoModal(); 
    newdialog.UpdateData(TRUE); 

    } 上面代码中,红色部分写的有问题,在DoModal后面,你又写了一句UpdateData,这是不对的
    因为DoModal之后,窗口就已经销毁了,结果你又去UpdateData,肯定要出错的。
    直接把UpdateData删掉,然后把你那个OnOK函数给改一下,EndDialog去掉,CDialog::OnOK()的注释去掉,就可以了。