내 CDialog 기반 응용 프로그램을 닫으려고합니다. CWnd :: OnClose()를 호출하고 디버거가 Windows 시스템 파일로 이동합니다. 디버거 출력 창에서 이러한 루핑 줄을 무기한 얻을.MFC 대화 상자 응용 프로그램이 닫히지 않습니다.
스레드 'Win32 Thread'(0x1040)가 코드 0 (0x0)으로 종료되었습니다. 스레드 'Win32 Thread'(0x2fa4)가 코드 0 (0x0)으로 종료되었습니다. 'Win32 Thread'(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를 열 수 없습니다
어떤 아이디어가 내가 부러 졌는지 또는 어떻게 추적해야하는지? 감사합니다. James
편집 대화 상자의 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 : CWnd :: OnClose()를 this-> EndDialog (0)로 바꾸면 문제를 해결할 수 있지만 걱정되는 것 같습니다.