본문 바로가기
개발/mfc

mfc, Enter, ESC 등 입력 키 감지

by 즐기며 2024. 11. 14.

​키 입력을 감지하고 싶다면,  PreTranslateMessage() 함수를 추가 하면 됩니다.

 

BOOL CDlg_Main::PreTranslateMessage(MSG* pMsg)  // Enter, ESC key 안먹게,
{
	if (pMsg->message == WM_KEYDOWN)  // Key 눌려지면,
	{
		if ( pMsg->hwnd == GetDlgItem(IDC_m_ED_TxDirect )->m_hWnd ){  // 특정 Control 이면
			switch ( pMsg->wParam ) {
			case VK_RETURN:		// VK_RETURN == 0x0d  , Enter 이면,
				m_TxDir.ReplaceSel(_T("\r\n"));   
				AfxMessageBox(_T("ENter"));
				return TRUE;	
			}
		} else {		// 위 컨트롤이 아니면, 
			if (pMsg->wParam == VK_ESCAPE || 	// ESC 이거나
				pMsg->wParam == VK_RETURN)		// 리턴 이면
					return TRUE;				// 무시 해라
		}
	}

	return CDialogEx::PreTranslateMessage(pMsg);
}

 

 

위 보기는

1. 특정 컨트롤 ( Edit box  : IDC_m_ED_TxDirect ) 에서 엔터 치면, 다음줄로 가게 하는것 추

    만약 이게 없으면, 아무일 안함,

2. 그 컨트롤 아니면, 엔터키와 ESC 키를 무시 하도록,

하는 것이다.

 

return true; // true면 동작을 안먹게 함. false면 동작을 먹게 함.