2008/07/23 13:45
Dialog 기반 프로그램에서 Enter 키나 ESC 키를 눌렀을때 프로그램이 종료되는 현상 막기
2008/07/23 13:45 in Study/C++/MFC

MFC 의 Dialog 기반에서 프로그램을 만들때,
Enter 키나 Esc 키를 입력하였을경우, 프로그램이 자동으로 종료 된다.
이는 CDialog::OnOK() 함수와 CDialog::OnCancel() 함수가 자동으로 호출되기 때문이다.
이를 방지 하기 위해서는 아래와 같이 해주면 된다.
1. 클래스뷰에서 Dialog 관련 클래스(ex - ~~~Dlg) 를 클릭후 속성창 부분의 <재정의> 버튼을 클릭
2. PreTranslateMessage 를 찾아서 추가
3. 추가된 PreTranslateMessage에 아래의 소스코드를 삽입
Enter 키나 Esc 키를 입력하였을경우, 프로그램이 자동으로 종료 된다.
이는 CDialog::OnOK() 함수와 CDialog::OnCancel() 함수가 자동으로 호출되기 때문이다.
이를 방지 하기 위해서는 아래와 같이 해주면 된다.
1. 클래스뷰에서 Dialog 관련 클래스(ex - ~~~Dlg) 를 클릭후 속성창 부분의 <재정의> 버튼을 클릭
2. PreTranslateMessage 를 찾아서 추가
3. 추가된 PreTranslateMessage에 아래의 소스코드를 삽입
BOOL CMy723test1Dlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_ESCAPE:
case VK_RETURN:
return TRUE;
default:
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
{
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_ESCAPE:
case VK_RETURN:
return TRUE;
default:
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}


Prev
Rss Feed