티스토리 뷰

목차

    반응형

    IsWindo, MFC 다이얼로그 종료 메시지 순서 (윈도우 폼 끝내기)


    IsWindo, MFC 다이얼로그 종료 메시지 순서 (윈도우 폼 끝내기)


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

     

    사용자가 종료(X)버튼 클릭 -> WM_SYSCOMMAND -> WM_CLOSE -> WM_DESTROY -> WM_QUIT


    아래 코드는 b1 -> b2-> b3-> b4 의 순서로 코드가 진행됩니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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
    }
    cs


    IsWindo, MFC 다이얼로그 종료 메시지 순서 (윈도우 폼 끝내기)





    반응형