VC毕业设计,就差一点了,该怎么处理

VC毕业设计,就差一点了
我做了一个饭卡管理系统,主界面上用的是非模态对话框,程序运行已经比较稳定了,功能也实现了,甚至超出了毕业设计要求,但是从头到尾困扰我的问题还没有解决:当程序关闭的时,也就是我按主界面上的叉的时候,编译器会报错!说什么访问冲突!

我的类是这样的结构,首先一个CERPView:CView, 然后这个CERPVIEW下有一个CardView指针,当用户登录成功后,会通过
CardView =new CCardViewDlg();
CardView.Create(IDD_CARDVIEW,this);
 来创建单文档界面(CERPView)下的主对话框,对话框上面有一些ado控件,然而就在我关闭单文档界面的时候,程序就报错了,程序甚至连主视图CERPView和子窗体(CardView)的析构函数都未执行,而且也没来得及触发onclose事件,大家帮我看看这究竟是怎么回事啊?这是否和那几个ado控件有关?如何才能把窗体卸载干净?
C/C++ code

int CFERPView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    

    if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;
    setting.Load();   //加载设置

    loginDlog login(&setting); //登录窗体

    if(login.DoModal()!=IDOK)
        return -1;
    
    CardView=new CCardViewDlog(&setting);  //主窗体对象创建
    return 0;
}


void CFERPView::OnShowWindow(BOOL bShow, UINT nStatus)
{
    CView::OnShowWindow(bShow, nStatus);  //创建主窗体
    CardView->Create(IDD_CARD_VIEW,this);
    if(setting.ifInfCard==TRUE)
        CardView->ShowInfCard(this);
    if(setting.ifAutoMt==TRUE)
    {
        CButton *check=(CButton*)CardView->GetDlgItem(IDC_AUTOMATCH);
        check->SetCheck(TRUE);
    }
}





------解决方案--------------------
建议使用排除法
把你觉得有问题的代码都注释掉
很快就会知道到底错在哪了
然后再对症下药
------解决方案--------------------
报的错是什么...
------解决方案--------------------
难道是 析构顺序不对?
lz把最后 释放资源销毁对象的代码都注释了试试?
------解决方案--------------------
你自己有没有重载CardView的OnClose和OnDestroy事件?这个不是先关闭CardView再关闭CERPView的么。在一些地方加一些MessageBox等弹出窗口的,你就可以知道问题具体在哪。
------解决方案--------------------
非模态对话框,一般都要求:
1.使用的时候,Dialog* pd = new Dialog;

2.销毁对话框时,需要手动调用OnDestroy()函数;

3.对话框销毁后,需要在PostNcDestroy事件之后删除自己,而不是在外部delete(这样很繁琐):
virtual void PostNcDestroy (){CDialog::PostNcDestroy(); delete this;}
------解决方案--------------------
修正一下:上面:2.销毁对话框时,手动调用DestroyWindow()
------解决方案--------------------
我之前弄过类似的对话框,不过对话框还是有OK按钮的,我在OnOK中调用DestroyWindow();然后在OnDestroy()中delete this了。
或者你在关闭视图的OnClose消息中向对话框发送OnDestroy消息。
------解决方案--------------------
1。先屏蔽部分代码再找错误。
2. 调试
------解决方案--------------------
检查所有的析构函数和控制关闭的控件,看是否对new过的变量(和打开的窗口)没有deleted掉(对窗口没有destory或者deleted),同时注意数组的deleted方法。
检查所有自己声明的变量,是否没有初始化(我想这是主要原因)。打开汇编窗口和内存窗口,查看报错的那个地方对应的内存是哪儿,查看是否真的冲突。