当一个子对话框调用另一个子对话框的同时,怎么能同时关闭自己?

解决方案 »

  1.   


    1:调用另一个对话框后destroyWindow
    2:让被调用的对话框给自己SendMessage(WM_CLOSE)
    3: 通知主窗口关闭自己并调用另一个对话框
      

  2.   

    对了,这个问题我也碰到过,我这样做的,总感觉怪怪的dlg1,dlg2;
    dlg1关闭的时候调用dlg2;dlg1的比如OnOK里面
    {
    CDialog::OnOK();
    CDlg2 dlg2;
    dlg2.DoModal();
    }那么这样会不会有什么问题?比如dlg1在dlg2启动的时候到底关闭了吗?
    虽然效果看上去是对的...
      

  3.   

    最好还是在主窗口里保存各个子窗口的指针,子窗口1要打开子窗口2不是直接打开子窗口2而是访问主窗口中子窗口2的指针,子窗口1调用主窗口的一个成员函数启动子窗口2,然后子窗口1再自己DestroyWindow
      

  4.   

    楼上的解决方案虽然看起来比较怪,可以应该工作正常。
    下面是CDialog::OnOK()的实现,其中EndDialog(IDOK);应该已经将对话框结束掉了,只是对象本身还没有析构而已。
    void CDialog::OnOK()
    {
    if (!UpdateData(TRUE))
    {
    TRACE(traceAppMsg, 0, "UpdateData failed during dialog termination.\n");
    // the UpdateData routine will set focus to correct item
    return;
    }
    EndDialog(IDOK);
    }不过感觉这种代码不容易理解和扩充。看楼主的问题,应该不是模式对话框。可以创建另一个对话框后,给自己发一个close消息。