일반적으로 다이얼로그 박스를 만들었을 경우,

그위에 버튼, 에디트, 스크롤 등등 오브젝트가 없을 경우는 상관 없이 키입력이 받아집니다.

하지만, 위의 오브젝트를 하나라도 만들 경우 OnKeyDown이 먹지 않습니다.

이유는 다이얼로그박스 위의 오브젝트 중의 하나가 선택이 되게 되고 그 오브젝트로 키입력이 가기 때문에

다이얼로그 박스는 키입력을 처리하지 못합니다.

이를 위해 메시지 처리를 가로채는 방법을 이용합니다.

먼저 PreTranslateMessage(MSG* pMsg) 메시지를 생성합니다.

해당 메시지 핸들러 함수에 다음과 같이 OnKeyDown으로 Redirection 시켜주도록 짜면 됩니다.

if(pMsg->message==WM_KEYDOWN){
SendMessage(WM_KEYDOWN,pMsg->wParam,pMsg->lParam);
return TRUE;
}

Posted by 벅스바니
,