Dialog에서 Enter 키를 입력하여 EditBox에 입력된 정보를 Listbox로 넘겨주고자 하는데,
Enter키를 누르면 다이얼로그창이 꺼지는 현상 발생!!
조언 & 검색 결과...
Dialog에서 Enter 키 입력시 Dialog가 사라지는 문제를 해결하려면 PreTranslateMessage 함수를 사용해야 한다고 나왔다.
PreTranslateMessage( ) 란??
virtual BOOL PreTranslateMessage( MSG* pMsg );
라고 한다.
그럼..어떻게 문제를 해결했는지 확인해 보자!
1. > 좌측의 메인 Dialog class를 클릭하고 속성창을 보면 (우측 동그라미 표시) 재정의 라는 버튼이 있는데 이것을 클릭한다. 2. > PreTranslateMessage 이벤트를 찾아 해당 함수를 추가해 준다. 3. > 다음과 같이 if문을 작성하고 컨트롤하고자 하는 값을 넣은다. 본인은 KEYDOWN메시지와 VK_RETURN에 대해서 컨트롤 하였다. 커서(잘 안보이지만..)가 위치한 곳에 '키보드가 눌러졌을 때 실행하고 싶은 문장'을 작성한다. 예를 들어.. if(pMsg->message == WM_KEYDOWN ) return TRUE; 이와 같이 작성하면 키보드가 눌렸을 때에 메시지박스가 뜨게 된다. 리턴문이 있는 맨 마지막 줄에 return CDialog::PreTranslateMessage(pMsg); 이 있는데 이것이 리턴되기 전에 if문 안에서 중간에 return false; 를 해 버리면 어떠한 메세지도 프로그램으로 전달 되지 않게 할 수 있다. (이런 식으로 원하지 않는 사용자 메시지를 걸러 낸다.)
{
MessageBox("키가 눌러졌습니다.");
}
댓글 없음:
댓글 쓰기