★━─…C/C++/MFC

Dialog based 프로그램 작성시 Enter, ESC Key 처리

six605 2008. 5. 8. 12:17
Dialog based 프로그램 작성시 Enter, ESC Key 처리



 보통 Dialog based 기반으로 프로그램 작성시
특별하게 Enter key 에 대한 처리 루틴을 만들지 않으면
Enter key를 누르면 프로그램이 종료 된다.

(VC++로 생성한 모든 프로그램은 특별히 변경시키지 않는 이상 Ente Key를 누르면
 'IDOK' 라는 메시지가 발생함. 이런 이유 때문에 Dialog 기반으로 만든 프로그램에서는
 엔터키를 누르면 프로그램이 종료됨.)





방법1. Enter Key 처리

IDOK 에 대한 메시지 처리기를 만들지 않아도 자동적으로 먹는거 같다.



특별히 Enter key 에 대한 메시지 처리 루틴이 없다면
아무 동작도 하지 않게 작성해 놓는 것이 좋다.






방법2. Enter, ESC key 처리

PreTranslateMessage 함수 Overriding
아직 공부하지 않았지만 "후킹" 이란 방법을 이용한 것임.

BOOL CManagerClientDlg::PreTranslateMessage(MSG* pMsg)
{
  if (pMsg->message == WM_KEYDOWN) {
        if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) {
      // VK_RETURN  : Enter Key
      // VK_ESCAPE  : ESC key
           
      return TRUE;
        }
    }
 
  return CDialog::PreTranslateMessage(pMsg);
}




@