原因分析:
1、排除Win32 导致的错误,系统API不使用异常而是使用返回值和GetLastError联合检测和报告错误。这种方式不会提示MessageBox这种重量级的窗口错误。
2、由于MFC的类普遍使用了异常抛出与捕获,因此肯定是某个地方触发了MFC的异常机制。
因此,可以确定是使用MFC的某些类用法不当导致的错误。逐一排查新增代码,找到错误。
本工程中导致此错误的原因在于以下代码:
CTime(nAddTime).Format(_T("%Y/%m/%d %H:%M:%S"));// nAddTime是一个错误的时间值,如未初始化的时间值,导致错误
由于此行代码在消息处理中,通过追踪MessageBox函数调用,会误认为是PostMessage/SendMessage等函数的错误。