首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

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

热点排行