非模态对话框重载了 PostNcDestroy()和 OnCancel(),但是销毁失败
对象指针不为NULL

解决方案 »

  1.   

    全部去掉
    只要在析构函数里把你对话框内分配的资源释放掉就可以了在外面delete 你的dialog
      

  2.   

    CXXDlg* pDlg = new CXXDlg;
    pDlg->Create(...);
    pDlg->ShowWindow(SW_SHOW);
    ......
    pDlg->DestroyWindow();
    delete pDlg;
    pDlg = NULL;
      

  3.   

    我在父窗口类中声明了一个非模态对话框对话CFreightInfoProperty*    pDialog;(父亲类为CClientMain)
    构造函数中初始化pDialog = NULL;
    然后在父类中定义一个函数在ListControl右键弹出记录属性对话框//**********************************************************************
    // 函数: OnFreightProperty
    // 功能: 显示属性
    //*********************************************************************
    void CClientMain::OnFreightProperty()
    {
    //显示非模态属性对话框
    if(pDialog != NULL)
    pDialog->ShowWindow(SW_HIDE);
    pDialog = new CFreightInfoProperty(&m_aFreightInfoModel);
    pDialog->Create(IDD_FREIGHT_PROPERTY);
    pDialog->ShowWindow(SW_SHOW);
    }
    当我在ListControl 中关闭属性对话框,而不关闭父窗口,再次右键弹出属性对话框时,出现了错误。BOOL CWnd::ShowWindow(int nCmdShow)
    {
    ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL)); if (m_pCtrlSite == NULL)
    return ::ShowWindow(m_hWnd, nCmdShow);
    else
    return m_pCtrlSite->ShowWindow(nCmdShow);
    }
    这是由于我销毁失败吗?如果是的, 应该在哪里销毁,怎么销毁,跪求解决实现