MFC Dialog를 만들면 기본적으로 Enter 또는 ESC 키를 누르면 프로그램이 종료된다.
이는 Enter키 이벤트가 발생하면 자동으로 OnOK() 함수가 호출되고
ESC 키 이벤트가 발생하면 OnCancel() 함수가 호출되기 때문이다.
이러한 현상을 방지하기 위해서는 PreTranslateMessage 함수를 통해 제어가 가능하다.
// 클래스 마법사에서 PreTranslateMessage 가상함수를 추가.
BOOL CProjectDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_ESCAPE)
{
// ESC 키 이벤트에 대한 처리 추가
return TRUE;
}
else if (pMsg->wParam == VK_RETURN)
{
// Enter 키 이벤트에 대한 처리 추가
return TRUE;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
'Programming > C, C++, MFC' 카테고리의 다른 글
문자열 인코딩 변경하기 (0) | 2021.05.06 |
---|---|
특정주소가 폴더(디렉토리)인지 파일인지 확인하자 (0) | 2021.02.04 |
하위폴더 포함, 폴더 전체를 복사하자 (0) | 2020.11.10 |
std::string에서 format을 사용하자 (2) | 2020.03.19 |
CStdioFile 을 이용한 파일 입출력에서 내용이 깨질경우 (0) | 2019.07.09 |