2017-03-15 9 views
0

모달 대화 상자를 열고 모달 대화 상자를 닫으면 응용 프로그램을 종료하고 싶습니다.모달 대화 상자에서 MFC 응용 프로그램 종료

그러나 예외 아래 점점 모달의 전용 멤버 변수의 멤버 메소드 형성 :

Exception thrown: read access violation. 

안전하게 ModalDialog에서 응용 프로그램을 닫을 수있는 방법이 있습니까를?

+0

예외를 디버깅하려고 시도 했습니까? – rrirower

답변

0

응용 프로그램을 끝내기 위해 대화 상자에서 WM_CLOSE를 게시하는 방법을 문의하십시오. 및이 방법으로 ModalDialog에서 응용 프로그램을 안전하게 닫을 수 있는지 확인하십시오.

예, 대화 상자를 닫기 전에 WM_CLOSE를 MainWnd에 게시해야합니다. MainWnd는 응용 프로그램의 종료를 처리해야합니다.

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) 
    ON_BN_CLICKED(IDOK, &CAboutDlg::OnBnClickedOk) 
END_MESSAGE_MAP() 

void CAboutDlg::OnBnClickedOk() 
{ 
    ASSERT(AfxGetApp()->m_pMainWnd != NULL); 
    AfxGetApp()->m_pMainWnd->PostMessage(WM_CLOSE, 0, 0); 
    CDialogEx::OnOK(); 
} 
0

CYouModal :: OnDestroy() 처리기에서 WM_CLOSE ID를 사용하여 기본 창의 PostMessage를 호출하십시오. 너 그거 해봤 니?

2

대화 상자를 표시하려면 응용 프로그램에서 DoModal()을 호출해야합니다.

DoModal() 호출 후 응용 프로그램을 종료 할 수 있습니다.

dlg.DoModal(); 
//write code to exit application 

DoModal()의 반환 값을 확인하고 그에 따라 응용 프로그램을 종료 할 수 있습니다.

+0

나는이 대답의 상식을 좋아한다. –

관련 문제