ESC 누를때 다이얼로그 사라지지 않게

From YYpBD's MediaWiki

Jump to: navigation, search

ESC키로부터 Dialog 사라짐을 방지  | VC++ 일반 2007-12-12 오후 2:41:10

한인식 (vol26)    번호: 7831   / 평점:  (9.0)  / 읽음:80
[출처] http://kr.blog.yahoo.com/his636



// 멤버 변수

        BOOL m_bClose

// 생성자

        m_bClose = FALSE;

// OnClose

void CKeyDlg::OnClose()

{

        m_bClose = TRUE;

        CDialog::OnClose();

}



// WindowProc

LRESULT CKeyDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

{

        if( message == WM_COMMAND && wParam == WM_DESTROY )

        {

                if( m_bClose == FALSE )

                        return NULL;

                // esc키로 부터 다이얼로그 사라짐을 방지

                // 요길 FALSE(NULL)로 막아주면

                // (정상적으로는 아래 return 값이 1로 됨)

                // 다음에 message WM_DESTROY, WM_NCDESTROY가

                // 날아오지 않아 종료 되지 않음

        }

        return CDialog::WindowProc(message, wParam, lParam);

}



/// 참고

// dialog에서 esc 또는 close 버튼은  message - 111, wParam - 2 가 날아옴

// return 값이 TRUE 이면

// message - 2에 이어 message -82가 날아옴



//#define WM_COMMAND                      0x0111

//#define WM_DESTROY                      0x0002

//#define WM_NCDESTROY                    0x0082

//#define WM_CLOSE                        0x0010



/* Enter 키 */



버튼 중에 Property에 Default라고 체크가 된 것이 있을 것입니다.



버튼중 하나만이 이 속성을 가질 수 있는데 Enter키를 치면 이 버튼이 실행됩니다.



Default로 IDOK버튼이 먹게 되지요. 해서 다른 버튼에 이속성을 주거나 IDOK버튼의 함수를 고치세요.


맞춤검색