API/MFC

윈도우 프로그램의 종료 메시지 순서

by Naya posted Aug 03, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

개요


윈도우 프로그램이 종료되는 메시지의 순서를 알고 적절한 대처를 합니다. 이것을 응용하면 윈도우가 죽기직전에 살릴 수도 있습니다.

사용자가 종료(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
}

http://a.tk.co.kr/63