MFC에서 ESC or Enter키를 누르게 되면 SW가 꺼지는 현상이 발생된다.

 

이를 막기 위한 것

 

1. Ctrl + Shift + x로 클래스 마법사에 들어간다.

 

2. 가상 함수를 클릭한다.

 

3. PreTranslateMessage를 생성한다.

 

4. 

 

BOOL ShipInfoDlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
	if (VK_RETURN == pMsg->wParam || VK_ESCAPE == pMsg->wParam)
	{
		return TRUE;
	}

	return CBCGPDialog::PreTranslateMessage(pMsg);
}

이렇게 설정하여 주면 막을 수 있다.

RETURN은 Enter이고 ESCAPE가 ESC이다.

 

여기에다가 만약 어느 컨트롤에서 Enter키를 눌렀을 때의 이벤트를 설정해 줄 수있다.

BOOL ShipInfoDlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
	if (WM_KEYDOWN == pMsg->message)
	{
		if(pMsg->message == WM_KEYDOWN && pMsg->hwnd == GetDlgItem(IDC_SEARCHTEXT)->m_hWnd && pMsg->wParam == VK_RETURN)
		{
			OnBnClickedSearchbtn();
		}
	}
		
	if (VK_RETURN == pMsg->wParam || VK_ESCAPE == pMsg->wParam)
	{
		return TRUE;
	}

	return CBCGPDialog::PreTranslateMessage(pMsg);
}

위처럼 IDC_SEARCHTEXT라는 컨트롤에서 Enter키를 누르게 된다면

OnBnClickedSearchbtn();이라는 함수를 실행하게 된다. 끗