请问如何用MFC做一个对话框A,点击A的按钮关闭对话框A然后弹出对话框B?请详细一点,谢谢

解决方案 »

  1.   

    CDialogA dlgA;
    if(dlgA.DoModal() == IDOK)
    {
        CDialogB dlgB;
        dlgB.DoModal();
    }
      

  2.   

    我真看不明白。例如我先在ResouceView建立一个一个IDD_DIALOG1,我如何点击IDD_DIALOG中的一个button1,来弹出IDD_DIALOG1呢?
      

  3.   

    如果定义现在的对话框为A,目标弹出的对话框为B
    那么我开始在ResouceView编辑的对话框为B,他属于一个类b。对应的代码为
    b B;
    B.DoModal();我现在不知道类b,目标对话框B怎么处理。我现在能做到就是在ResouceView编辑对话框,具体什么关联不是很明白。以前没弄过MFC,请指教
      

  4.   

    在IDD_DIALOG中button1响应函数中添加楼上的代码即可,当然要包含类B的头文件。要说理解嘛,就理解为类B的一个对象好了。ps:
    主对话框不能关闭,只能隐藏:ShowWindow(SW_HIDE);
      

  5.   

    假设你的程序是基于对话框的程序;
    假设你程序的主对话框为A对话框,对应的类为CDlgA,当点击A对话框的确定按钮时,关闭A对话框同时打开B对话框如果假设成立,步骤如下:
    1 在资源视图中,添加一个新的对话框资源(比如ID为ID_DIALOGB);
    2 双击对话框资源ID_DIALOGB,给该对话框资源添加关联类CDlgB;
    3 在资源视图中,双击A对话框资源的确定按钮,确定按钮的响应函数如下:
    void CDlgA::OnOK()
    {
        CDlgB dlgb;
        dlgb.DoModal();
        CDialog::OnOK();
    }//随手写的,凑活看吧
      

  6.   

    //非常对不住,上面的有点错误void CDlgA::OnOK() 

        CDialog::OnOK();  //这句话应该放在dlgb.DoModal();的前面
        CDlgB dlgb; 
        dlgb.DoModal(); 
      

  7.   

    我真看不明白。 例如我先在ResouceView建立一个一个IDD_DIALOG1,我如何点击IDD_DIALOG中的一个button1,来弹出IDD_DIALOG1呢?
    这个问题很好解决,你为你这个新的资源创建一个类(想弹出对话框就创建基类是CDialog的)就可以了,比如,在按钮响应函数中定义一个局部的类的对象CPopDlg dlg 在上边高手所说的
    void CDlgA::OnOK() //第一个窗口的按钮响应函数

        CPopDlg dlg;
        if(dlg.DoModal)==IDOK)
    {
    //如果点击ok所作的工作
    }if(dlg.DoModal)==IDCANCEL)
    {
    //如果点击cancel,你所作的工作
    }
    else{...}
    } 不明白代码可以查看msdn中的DoModal返回值
      

  8.   

    在应用程序初始化函数中,把m_pMainWnd = &dlg去掉,在DoModal下面构造对话框B,并DoModal。
      

  9.   

    这种程序可以这么设计 主程序: B 对话框子窗口: A 对话框在InitDialog函数中CDialogA A;
    A.DoModal();然后给A 的关闭按钮添加函数CXXXXA::OnButton{
      CDialog::OnOK();
    }即可
      

  10.   

    双击button1添加一个函数:CxxxxDlg::button1(),用类向导为DIALOG建立一个类:CDialog,在此函数内添加如下代码:
    CxxxxDlg::button1()
    {
    CDialog dlg;
    EndDialog(IDCANCEL);
    dlg.DoModal();
    }
      

  11.   

    CDialogA a;
    CDialogB b;
    a.DoModal();
    b.DoModal();
      

  12.   

    CDialogA a; 
    PostMessageW(WM_CLOSE,0,0);
    a.DoModal();