개요
윈도우 프로그램이 종료되는 메시지의 순서를 알고 적절한 대처를 합니다. 이것을 응용하면 윈도우가 죽기직전에 살릴 수도 있습니다.
사용자가 종료(X)버튼 클릭 -> WM_SYSCOMMAND -> WM_CLOSE -> WM_DESTROY -> WM_QUIT
코드
MFC 의 경우 b1 -> b2-> b3-> b4 의 순서로 코드가 진행됩니다.
void CMainFrame::OnClose()
{
BOOL b1 = ::IsWindow( m_hWnd ); // b1 = TRUE
// 윈도우를 살릴 수 있는 마지막 기회!!! (중요)
if( 윈도우가 살아야함 == TRUE )
return;
CFrameWnd::OnClose();
BOOL b4 = ::IsWindow( m_hWnd ); // b2 = FALSE 윈도우가사라졌다.
}
void CMainFrame::OnDestroy()
{
BOOL b2 = ::IsWindow( m_hWnd ); // b1 = TRUE
CFrameWnd::OnDestroy();
BOOL b3 = ::IsWindow( m_hWnd ); // b1 = TRUE
}
{
BOOL b1 = ::IsWindow( m_hWnd ); // b1 = TRUE
// 윈도우를 살릴 수 있는 마지막 기회!!! (중요)
if( 윈도우가 살아야함 == TRUE )
return;
CFrameWnd::OnClose();
BOOL b4 = ::IsWindow( m_hWnd ); // b2 = FALSE 윈도우가사라졌다.
}
void CMainFrame::OnDestroy()
{
BOOL b2 = ::IsWindow( m_hWnd ); // b1 = TRUE
CFrameWnd::OnDestroy();
BOOL b3 = ::IsWindow( m_hWnd ); // b1 = TRUE
}
http://a.tk.co.kr/63