设置了一个按纽BTN1,希望单击此按纽即退出第一个对话框并弹出另一个对话框。
但我试过DoModal,会覆盖在第一个对话框上并无法响应
用ShowWindow却无法看到对话框
请大侠指点下

解决方案 »

  1.   

    用Create函数在你的那个按钮处理函数中动态创建非模式对话框,然后把第一个对话框藏起来。
      

  2.   

    ShowWindow看不到对话框是因为你的定义在栈中.也许就是在函数中.可以将定义放到相应的.h类中.
    还可以直接改变你原来的定义:CDialog dlg;
    改成指针方式:CDialog* dlg;
    dlg->ShowWindow(true);
      

  3.   

    这个问题我同学也碰到过,我是这样帮他解决的.
    你在前一个对话框的ONOK()函数中调用另一个对话框的DOMODAL()即可.
    注意一定要写在CDialog::OnOK()之后,不然前一个对话框不会消失.
      

  4.   

    不好意思没看清楚问题,你应该在响应按纽消息中,先调用ENDDIALOG()再调用另一个对话框的DOMODAL();
      

  5.   

    初始生成
      主对话框类   CMainDlg
      主应用程序类 CMainApp
    后添加
      登陆框类    CLoginDlg在CMainApp::InitInstance()中添加
         ……
        CLoginDlg  dlgLogin;
        if (IDOK != dlgLogin.DoModal())
        {
    return FALSE;
        }
        ……
        后面是自动生成代码,主对话框的DoModal
      

  6.   

    楼主没有搞清楚模态对话框的运作原理,所以才会问出这样的问题。MFC中,DoModal()调用后,对话框被打开,当调用EndDialog()函数后,对话框关闭;但是在对话框关闭以前,DoModal()函数不返回,而是一直在等待。如果在对话框中打开另一个对话框,关系如下:应用——》对话框1——》对话框2应用《——对话框1《——对话框2
      

  7.   

    使用create,InitInstance返回true,如果需要在对话框中关闭程序,需要调用postquitmessage
      

  8.   

    可以使用DOMODULE和SHOWWINDOW来实现的,点第一个对话框的按钮则DOMODULE弹出第二个对话框并SHOWWINDOW把第一个窗口隐藏.这样的话楼主所需要的效果应该可以实现,而且很简单.