【发布时间】:2012-10-23 16:00:51
【问题描述】:
我正在尝试关闭基于 CDialog 的应用程序。我调用 CWnd::OnClose() 然后调试器进入 Windows 系统文件。在调试器输出窗口中,我无限期地得到这些循环行。
线程“Win32 线程”(0x1040) 已退出,代码为 0 (0x0)。 线程“Win32 线程”(0x2fa4) 已退出,代码为 0 (0x0)。 线程“Win32 线程”(0x1ca0) 已退出,代码为 0 (0x0)。 “LifescanDatabaseApplication.exe”:已卸载“C:\Windows\SysWOW64\davclnt.dll” “LifescanDatabaseApplication.exe”:已卸载“C:\Windows\SysWOW64\davhlpr.dll” “LifescanDatabaseApplication.exe”:已加载“C:\Windows\SysWOW64\davclnt.dll”,无法找到或打开 PDB 文件 “LifescanDatabaseApplication.exe”:已加载“C:\Windows\SysWOW64\davhlpr.dll”,无法找到或打开 PDB 文件
我有什么想法或者我应该如何追踪它? 谢谢, 詹姆斯
编辑 对话框的函数 OnClose() 如下所示;
void CApplicationDlg::OnClose()
{
UpdateData(TRUE);
if(AfxMessageBox(_T("Are you sure you want to close? If so, no more updates will be issued"),MB_YESNO)==IDYES)
{
Logger * instance = Logger::Instance();
if(instance!=nullptr)
{
instance->writeToLogFile("Application shutdown.");
}
CWnd::OnClose();
}
}
我已经通过 Cwnd::OnClose() 命令使用调试器跟踪了这一点。问题是,代码没有回到调用对话框来运行 EndDialog 的部分。我想我在对话框代码的其他地方更改了一些东西,阻止了这项工作。
编辑 2: 用 this->EndDialog(0) 替换 CWnd::OnClose() 似乎可以解决问题,但这令人担忧。
【问题讨论】: