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);
}
@
보통 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);
}
@