2010년 9월 9일 목요일
개요.. |
CWinThread::PreTranslateMessage 함수는 윈도우(CWnd)의 자식을 비롯하여 다양한 윈도우 메시지를 가로채서 처리하는 역할을 합니다.
PreTranslateMessage 함수를 재정의하여 메시지(Message, MSG) 를 처리한 이후에 리턴값을 어떻게 하는지 설명합니다.
설명 |
PreTranslateMessage함수를 재정의 하여,
- 더 이상 메시지가 처리되지 않기를 바란다면 1(0이 아닌값)을 리턴 합니다.
- 만일 메시지가 계속 처리하기를 원한다면 0을 리턴 합니다.
참고로 MFC CWnd 의 다음과 같은 코드를 보면 PreTranslateMessage 함수의 리턴값이 0 이 아니라면 더 이상 메시지를 Walk 하지 않습니다.
BOOL PASCAL CWnd::WalkPreTranslateTree(HWND hWndStop, MSG* pMsg) { ASSERT(hWndStop == NULL || ::IsWindow(hWndStop)); ASSERT(pMsg != NULL);
// walk from the target window up to the hWndStop window checking // if any window wants to translate this message
for (HWND hWnd = pMsg->hwnd; hWnd != NULL; hWnd = ::GetParent(hWnd)) { CWnd* pWnd = CWnd::FromHandlePermanent(hWnd); if (pWnd != NULL) { // target window is a C++ window if (pWnd->PreTranslateMessage(pMsg)) return TRUE; // trapped by target window (eg: accelerators) }
// got to hWndStop window without interest if (hWnd == hWndStop) break; } return FALSE; // no special processing } |
함수 원형 및 MFC 설명 |
virtual BOOL PreTranslateMessage(
MSG *pMsg
);
Return Value
Nonzero if the message was fully processed in PreTranslateMessage and should not be processed further. Zero if the message should be processed in the normal way.
'Education > 대학 수업' 카테고리의 다른 글
[컴퓨터 교수법] 교육의 의미 By 용호 (0) | 2010.09.14 |
---|---|
[컴퓨터 교수법] 9월 1,2주차 수업내용 By 용호 (0) | 2010.09.14 |
[안드로이드] 프로젝트 디렉토리 by 용호 (0) | 2010.07.15 |
과제.. 시간표만들기(미완) (0) | 2009.09.15 |
xml -> xsd (0) | 2009.09.15 |
댓글