본문 바로가기

Computer Language/MFC

MFC Tip. 다이얼 로그 엔터키 막기

MFC 에서 다이얼 로그로 프로그램을 만들경우

실행시켰을때, 엔터키를 누르면 프로그램이 종료되어 버리는 경우가 있다.

이것을 막기위한 방법이 있는데

PreTranslateMessage 함수를 이용하는 것이다.

이 함수는 WinProc 보다 먼저 메세지를 가로채서 핸들링 할 수 있는 것이다.


이 함수를 사용하는 방법은 간단하다.

우선 클래스 위져드를 열고 (Ctrl + W)

다이얼로그 클래스 이름이 예를들어 CPmDlg 라면 클릭하고,

아래와 같이 오른쪽의 PreTranslateMessage 를 선택, AddFunction 을 한다.
사용자 삽입 이미지


그리고 Edit Code 를 선택해서

BOOL CNFDlg::PreTranslateMessage(MSG* pMsg)
{
 if(pMsg->message ==WM_KEYDOWN)
 {
  if(pMsg->wParam ==13)
   return TRUE;
 }
}

이런식으로 핸들링해주면 된다.~
해석 까지 하자면..
받은 메세지가 '키다운'이고, 그 메세지의 값이 13, 즉 엔터키일때
return TRUE 를 함으로써 아무것도 하지않는다는 것이 된다.