最近用VS2005写了个MFC多窗口工具,但是在关闭exe时,出现”应用程序错误“的提示

以下是我关闭窗口时的代码!通过单步调试,运行到最后个”}“按F5就出现如上图所示的错误。voidCRO2TestDlg::OnClose(){//if(MessageBo... 以下是我关闭窗口时的代码!通过单步调试,运行到最后个”}“按F5就出现如上图所示的错误。
void CRO2TestDlg::OnClose()
{
//if (MessageBox(_T("是否退出程序?"), _T("友情提示"), MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2) == IDNO)
if (MessageBox(_T("是否退出程序?"), _T("友情提示"), MB_YESNO|MB_ICONQUESTION) == IDNO)
{
return;
}
#if 1
//============保存界面值===========
if (SaveFilePath == "NULL")
FileSaveas();
SaveNetConfigs();
#endif
#if 1
//excel的一些相关操作:释放对象(相当重要!)
range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();

//excel的一些相关操作::退出程序
app.Quit();
//m_ExlApp一定要释放,否则程序结束后还会有一个Excel进程驻留在内存中,而且程序重复运行的时候会出错
app.ReleaseDispatch();
//::CoUninitialize();

//连接成功与否标识:0未连接 1连接
socketFlag = 0;
//=========关闭所有定时器===================
KillTimer(IDC_SOCKET_TIMER);//连接终端
KillTimer(IDC_DEVICE_TIMER);
KillTimer(IDC_HIGHDEV_TIMER);
KillTimer(IDC_ALARM_TIMER);
KillTimer(IDC_FACTORY_TIMER);
KillTimer(IDC_NEW_TIMER);
KillTimer(IDC_WATCH_TIMER);
KillTimer(IDC_XCJL_TIMER);
KillTimer(IDT_AUTO_TIMER);
#endif
//=====关闭线程======
KillRcvThread(this);
m_thrdReceive = NULL;
KillSGMRcvThread(this);
m_thrdSGMReceive = NULL;
ClearBuffer(BufRcv + MAX_COMMBUF_LEN);
ClearSGMBuffer(SGMBufRcv + MAX_COMMBUF_LEN);

#if 1
SaveFilePath = "NULL";
OpenFilePath = "NULL";
PLFilePath = "NULL";
#endif
//===关闭串口===
if (m_port.IsOpen())
m_port.Close();
if (m_SMG_port.IsOpen())
m_SMG_port.Close();

//关闭子窗口
m_para7.OnClose();
m_para6.OnClose();
m_para5.OnClose();
m_para4.OnClose();
m_para3.OnClose();
m_para2.OnClose();
m_para1.OnClose();

//DestroyWindow();//仅仅释放窗口相关内存,并不销毁窗口对象
CDialog::OnCancel();
CDialog::OnClose();
//CDialog::OnOK();
}
单步调试,总是调到crtexe.c函数中的“if (*lpszCommandLine==DQUOTECHAR) inDoubleQuote=!inDoubleQuote;“
展开
 我来答
bhtzu
推荐于2017-12-16 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4210万
展开全部
  1. OnCancel和OnClose不应该重复调用基类函数,只调用一个即可,推荐OnCancel

  2. 单步调试中,在下方调用堆栈中,找到具体出错的程序代码(而不是系统代码),看看,是线程报错还是OnClose报错。

更多追问追答
追问

调用堆栈???额,,,看不出问题。。。

追答
就是这个调用堆栈,继续往下找找,有没有自己的代码部分。
微测检测5.10
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇... 点击进入详情页
本回答由微测检测5.10提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式