我想大概你是重载第一个对话框的OnOK()时候把里面的CDialog::OnOK()那句话给去掉了,那当然没有返回了。

解决方案 »

  1.   

    可以用this->ShowWindow(SW_HIDE);先把对话框藏起来,待另外一个对话框Domodel()后调用CDialog::OnOK()退出。
      

  2.   

    我的代码时这样的:
    void CInputPasswd::OnOK() 
    {
    .......
    if (strUserInPass.Compare(sPassWord) == 0) //if user's input correct
    {
    CModify dlgModify;
    dlgModify.DoModal();
    }
    else
    ......
    CDialog::OnOK();
    }
    因为在调用dlgModify.DoModal()时,CInputPasswd::OnOK() 并没有返回,因此InputPasswd对话框还依旧存在,可是我想让他消失亚,也就是说屏幕上应该只有dlgModify对话框。
      

  3.   

    如果我想在用户输入不正确的前提下,依然显示此对话框,即在else语句中调用函数达到仍旧显示对话框允许用户再次输入的结果,除非OnCancel()事件发生,我该怎么做呢?
      

  4.   

    CInputPasswd dlgPwd;// 一直循环直到用户输对密码或者在输密码时按取消按钮
    while(dlgPwd.DoModal() == IDOK)
    {
        if (dlgPwd.strUserInPass.Compare(sPassWord) == 0) //if user's input correct
        {
            CModify dlgModify;
            dlgModify.DoModal();
            break;
        }
    }
      

  5.   

    上面的方法可同时解决仁兄的两个问题;
    strUserInPass, sPassWord的作用域我是假设的。