kyuseo의 게임 프로그래밍

WM_CLOSE -> WM_DESTROY -> WM_QUIT :: 윈도우 프로그램의 종료 메시지 순서 본문

C++ 개발

WM_CLOSE -> WM_DESTROY -> WM_QUIT :: 윈도우 프로그램의 종료 메시지 순서

kyuseo 2007. 10. 24. 13:24

개요..

 

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

 

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

}