대화 상자 기반 프로그램에서 ENTER 키 처리하기
Study/MFC 2009. 1. 1. 15:34 |대화 상자 기반의 프로그램을 만들고, 에디트 컨트롤같은 텍스트 입력 컨트롤을 올려놓은 후 엔터(ENTER) 키를 누르면 대화 상자가 종료되는 현상이 발생한다. 이를 방지하기 위해서 엔터키 입력을 따로 처리해주어야 하는데, 이 경우 PreTranslateMessage() 함수를 오버로딩 해주어야 한다.
예를 들어 CTestDlg 클래스가 대화 상자를 나타내는 클래스라면 아래와 같이 코드를 추가한다.
즉, 대화 상자 클래스에서 윈도우 메시지를 처리하기 전에 이미 WM_KEYDOWN 키 중에서 RETURN 키에 대해서는 아무 일도 하지 않도록 만들고, ESC 키에 대해서는 프로그램을 최소화하도록 하는 코드이다.
예를 들어 CTestDlg 클래스가 대화 상자를 나타내는 클래스라면 아래와 같이 코드를 추가한다.
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) { if( pMsg->message == WM_KEYDOWN ) { if( pMsg->wParam == VK_RETURN ) return TRUE; if( pMsg->wParam == VK_ESCAPE ) { SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0); return TRUE; } } return CDialog::PreTranslateMessage(pMsg); }
즉, 대화 상자 클래스에서 윈도우 메시지를 처리하기 전에 이미 WM_KEYDOWN 키 중에서 RETURN 키에 대해서는 아무 일도 하지 않도록 만들고, ESC 키에 대해서는 프로그램을 최소화하도록 하는 코드이다.
'Study > MFC' 카테고리의 다른 글
VS .NET 2005 프로젝트 파일을 하위 버전으로 변환 (0) | 2007.01.10 |
---|---|
Visual Studio .NET 2005 를 사용할 때 deprecated 경고 없애기 (0) | 2006.12.11 |
MDI 에서 열려있는 모든 창(문서) 닫기 (0) | 2005.11.06 |
Windowx XP의 visual style 을 적용해보자 (0) | 2005.06.05 |
동적 할당으로 2차원 배열을 생성하는 새로운 방법 (0) | 2005.04.21 |