// 가상키코드 처리할 사용자 정의 함수 void CPnameDlg::KeyDown(MSG pMsg) { switch(pMsg.wParam) { case VK_LEFT : AfxMessageBox("왼쪽 방향키를 눌렀습니다."); break; case VK_RIGHT : AfxMessageBox("오른쪽 방향키를 눌렀습니다."); break; } }
위에서 처리 내용을 보면 알겠지만 PreTranslateMessage() 함수는 함수명 그대로 어떤 메시지를 도중에 가로채서 처리하고자 할때 쓰일수 있는 함수이다...
데모프로그램을 보면 다이얼로그 기반에서는 ESC키나 Enter키를 누르면 다이얼로그가 닫혀버리는데(=프로그램 종료) 이런 경우에 위의 예제를 좀만 수정하면 ESC키나 Enter키에 대한 메시지를 중간에 처리함으로서 프로그램이 바로 종료되는 문제 등을 처리할 수 있다.
또한 PreTranslateMessage() 함수는 단순히 키보드 메시지외에도 다른 메시지도 오므로 매개변수를 잘 이용해서 다양한 메시지 처리를 할수 있다.