내 프로그램이 모덜리스 대화 상자를 사용하여 사용자와 상호 작용하고 트레이 아이콘도 있습니다. 사용자는 트레이 아이콘을 사용하여 앱을 즉시 종료 할 수 있습니다.명령 메시지 처리기가 돌아 오기 전에 기본 대화 상자가 무효화됩니다.
BOOL OnInitDialog()
{
init data...
}
void OnDestroy()
{
destroy data...
}
void OnSomeButton()
{
CFileDialog dlg;
...
dlg.DoModal(m_hWnd));
access data...
...
}
void OnMenuExit()
{
DestroyWindow();
}
문제는 내가 모달 대화 상자 (OnSomeButton
)를 팝업 한 후 트레이 아이콘 메뉴를 사용하여 종료 할 때, 주 대화가 먼저 파괴하고 모달 하나가 반환 될 때 시도하는 일부 잘못된 데이터에 액세스 할 수 있다는 것입니다 , 충돌을 일으켰습니다.
데이터에 액세스하기 전에 일부 체크 코드를 추가 할 수 있지만 다른 방법이 있습니까? 창을 닫기 전에 OnSomeButton()이 반환하도록 보장 할 방법이 있습니까?
문제의 데이터가 유효하지 않은 이유는 무엇입니까? 어쨌든 응용 프로그램이 종료되면 할당 된 메모리를 확보 할 필요가 없습니다. 종료 할 때 해당 메모리가 해제되지 않도록 구조 조정하여 문제를 해결할 수 있습니다. –
메모리를 비우지 않아도 윈도우가 파괴되어 예측할 수없는 앱 동작을 일으키는 일부 상태 데이터 내용이 무효화됩니다. – toki