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 를 함으로써 아무것도 하지않는다는 것이 된다.
실행시켰을때, 엔터키를 누르면 프로그램이 종료되어 버리는 경우가 있다.
이것을 막기위한 방법이 있는데
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 를 함으로써 아무것도 하지않는다는 것이 된다.