(출처 : 짬뽕 ) PreTranslateMessage를 써서 입력을 받는다.
다이얼로그 헤더 파일의 선언부에 virtual BOOL PreTranslateMessage(MSG* pMsg);를 선언해주고 오버라이드한다.
BOOL ________Dlg::PreTranslateMessage(MSG* pMsg)
{
switch(pMsg->message)
{ // 키가 눌렸을때
case WM_KEYDOWN:
switch(pMsg->wParam)
{ // 리턴키\tab
case VK_RETURN:
return TRUE; // ESC키
case VK_ESCAPE: return TRUE;
}
} return CDialog::PreTranslateMessage(pMsg);
} 위와 같이 case문을 돌리면, 엔터나 escape눌렀을 때 종료되지 않는다.
그리고, 특정 키의 입력을 받아 처리하려면, case문에서 case (pMsg->wParam == 52) 와 같이 하면 키보드 4를 입력했을 때...처리하는 함수를 써 넣어 줄 수 있다.
미리 예약된 키보드 값을 따라야한다는 것을 명심!
■ PreTranslateMessage PreTranslateMessage의 설명을 보면 윈도우 메세지가 TranslateMessage나 DispatchMessage에 전해지기 전에 처리할 필요가 있을때 사용되어진다. 윈도우 메세지가 발생되면 TranslateMessage나 DispatchMessage에 가기전에 PreTranslateMessage를 거치게 된다.
PreTranslateMessage는 메세지 맵을 사용할 수 있다. 윈도우 메세지가 각 컨트롤에 전해지기 전에 그 메세지를 얻을 수 있다. virtual BOOL PreTranslateMessage( MSG *pMsg ); pMsg : 처리하는 메세지를 포함한 MSG 구조체의 포인터 이 포인터에는 메세지를 보내쪽의 윈도우 핸들과 보내온 메세지등의 정보가 저장된다.
MSG구조체
typedef struct tagMSG {
HWND hwnd; // 메세지를 건내받는 윈도우의 핸들
UINT message; // 메세지 번호(WM_RBUTTONDOWN등)
WPARAM wParam; // 메세지의 부가 정보
LPARAM lParam; // 메세지의 부가 정보
DWORD time; // 메세지가 포스트된 시간
POINT pt; // 메세지가 포스트되었을 때의 커서위치(스크린 좌표)
} MSG;
다이얼로그 헤더 파일의 선언부에 virtual BOOL PreTranslateMessage(MSG* pMsg);를 선언해주고 오버라이드한다.
BOOL ________Dlg::PreTranslateMessage(MSG* pMsg)
{
switch(pMsg->message)
{ // 키가 눌렸을때
case WM_KEYDOWN:
switch(pMsg->wParam)
{ // 리턴키\tab
case VK_RETURN:
return TRUE; // ESC키
case VK_ESCAPE: return TRUE;
}
} return CDialog::PreTranslateMessage(pMsg);
} 위와 같이 case문을 돌리면, 엔터나 escape눌렀을 때 종료되지 않는다.
그리고, 특정 키의 입력을 받아 처리하려면, case문에서 case (pMsg->wParam == 52) 와 같이 하면 키보드 4를 입력했을 때...처리하는 함수를 써 넣어 줄 수 있다.
미리 예약된 키보드 값을 따라야한다는 것을 명심!
■ PreTranslateMessage PreTranslateMessage의 설명을 보면 윈도우 메세지가 TranslateMessage나 DispatchMessage에 전해지기 전에 처리할 필요가 있을때 사용되어진다. 윈도우 메세지가 발생되면 TranslateMessage나 DispatchMessage에 가기전에 PreTranslateMessage를 거치게 된다.
PreTranslateMessage는 메세지 맵을 사용할 수 있다. 윈도우 메세지가 각 컨트롤에 전해지기 전에 그 메세지를 얻을 수 있다. virtual BOOL PreTranslateMessage( MSG *pMsg ); pMsg : 처리하는 메세지를 포함한 MSG 구조체의 포인터 이 포인터에는 메세지를 보내쪽의 윈도우 핸들과 보내온 메세지등의 정보가 저장된다.
MSG구조체
typedef struct tagMSG {
HWND hwnd; // 메세지를 건내받는 윈도우의 핸들
UINT message; // 메세지 번호(WM_RBUTTONDOWN등)
WPARAM wParam; // 메세지의 부가 정보
LPARAM lParam; // 메세지의 부가 정보
DWORD time; // 메세지가 포스트된 시간
POINT pt; // 메세지가 포스트되었을 때의 커서위치(스크린 좌표)
} MSG;
'dev, tech > Windows P' 카테고리의 다른 글
DC (Device Context) 와 HANDLE (핸들) (0) | 2007.01.24 |
---|---|
WinMain 에서 하는 일... (0) | 2006.03.04 |
aa (0) | 2006.02.14 |
유니코드(Uncode) (0) | 2006.02.13 |
Windows 서비스 (0) | 2006.01.25 |
댓글