728x90
MFC Dialog 엔터(Enter) 혹은 ESC 입력 시, 프로그램이 종료되지 않게 혹은 다른 버튼 수행하도록 하기
이 포스트는 이전 블로그에서 이전된 포스트입니다.
Dialog에서 Enter나 ESC 입력 시, 프로그램이 종료된다.
(사전 가정 : 기본 제공되는 OK 버튼과 Cancel 버튼을 제거하거나 함수 내용을 모두 주석처리한다.)
이 경우 동작 수행을 변경할 수 있다.
1. Dialog의 클래스 마법사 실행
2. 가상함수 탭에서 PreTranslateMessage 추가

3. 연결된 소스파일로 이동한 후, 아래를 참고하여 4~10행을 추가합니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
BOOL C진수변환기Dlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
{ // 위 VK_RETURN은 Enter, VK_ESCAPE는 ESC을 의미함. 필요시 하나만 사용.
return true;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
|
cs |
반응형
추가적으로 특정 버튼을 수행하려고 한다면
8행의 return true; 위에 버튼 실행을 위한 함수를 호출합니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
BOOL C진수변환기Dlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
{ // 위 VK_RETURN은 Enter, VK_ESCAPE는 ESC을 의미함. 필요시 하나만 사용.
OnBnClickedButtonConvert();
return true;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
|
cs |
.
728x90
'기타' 카테고리의 다른 글
| Windows7 게임 속도(프레임) 높이기 (0) | 2022.01.02 |
|---|---|
| MFC 아이콘 변경, 그림 추가 (0) | 2022.01.01 |
| '차단된 콘텐츠 허용' 자동으로 허용하기 (0) | 2021.12.29 |
| MFC 특정 Edit Control만 업데이트(UpdateData())하기 (하나의 에디트 컨트롤만 업데이트) (0) | 2021.12.29 |
| (C/C++) 현재시간 출력하는 예제 소스 (0) | 2021.12.28 |