由父对话框的按钮打开的子对话框利用右上角[X]的关闭按钮关闭了,当再次要通过父对话框的按钮打开子对话框时就会产生错误,也就是说子对话框只能被打开一次。产生这一情况的问题是什么?如何避免?

解决方案 »

  1.   

    模态对话框?
    如果是模态对话框且在父窗口保存了子对话框的指针的时候,如果没有在关闭的时候把指针赋NULL,就会那样.例如打开是这样:pDlg=new CMyDlg;//pDlg是父类里定义的一个CMyDlg的指针.
    pDlg->Create(IDD_MYDIALOG,this);
    pDlg->ShowWindow();如果pDlg关闭的时候没有使pDlg=NULL;就会出错,因为此时pDlg的句柄不为NULL.
      

  2.   

    也许你有什么资源(比如内存、DC等)在子对话框中分配了,可是关闭的时候没有释放,结果重新使用就会出错。
    你利用右上角[X]的关闭按钮关闭对话框的时候系统会调用对话框的OnCancel函数,按下确定时会调用OnOK函数,你可以在这两个函数中释放你的资源。具体可以一步步跟踪看到底哪一句出错。