From YYpBD's MediaWiki
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버튼의 함수를 고치세요.