공용 컨트롤에서 알림 받기
일반적인 컨트롤은 사용자 입력과 같은 이벤트가 컨트롤에서 발생할 때 부모 창에 알림 메시지를 보내는 자식 창입니다.
애플리케이션은 이러한 알림 메시지에 의존하여 사용자가 원하는 작업을 결정합니다. 대부분의 일반적인 컨트롤은 알림 메시지를 WM_NOTIFY 메시지로 보냅니다. Windows 컨트롤은 대부분의 알림 메시지를 WM_COMMAND 메시지로 보냅니다. CWnd::OnNotify 는 WM_NOTIFY 메시지의 처리기입니다. 마찬가지로 CWnd::OnCommand
, 구현 OnNotify
은 메시지 맵에서 처리하기 위해 OnCmdMsg
알림 메시지를 디스패치합니다. 알림 처리를 위한 메시지 맵 항목은 ON_NOTIFY. 자세한 내용은 Technical Note 61: ON_NOTIFY 및 WM_NOTIFY 메시지를 참조 하세요.
또는 파생 클래스는 "메시지 리플렉션"을 사용하여 자체 알림 메시지를 처리할 수 있습니다. 자세한 내용은 기술 참고 62: Windows 컨트롤에 대한 메시지 리플렉션을 참조 하세요.
알림 메시지에서 커서 위치 검색
경우에 따라 공통 컨트롤에서 특정 알림 메시지를 받을 때 커서의 현재 위치를 확인하는 것이 유용합니다. 예를 들어 공통 컨트롤이 NM_RCLICK 알림 메시지를 받을 때 현재 커서 위치를 확인하는 것이 좋습니다.
를 호출 CWnd::GetCurrentMessage
하여 이 작업을 수행하는 간단한 방법이 있습니다. 그러나 이 메서드는 메시지가 전송된 시점의 커서 위치만 검색합니다. 메시지가 전송된 이후 커서가 이동되었을 수 있으므로 현재 커서 위치를 가져오기 위해 호출 CWnd::GetCursorPos
해야 합니다.
참고 항목
CWnd::GetCurrentMessage
는 메시지 처리기 내에서만 호출되어야 합니다.
알림 메시지 처리기의 본문에 다음 코드를 추가합니다(이 예제에서는 NM_RCLICK).
CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;
이때 마우스 커서 위치가 개체에 cursorPos
저장됩니다.