다음을 통해 공유


공용 컨트롤에서 알림 받기

일반적인 컨트롤은 사용자 입력과 같은 이벤트가 컨트롤에서 발생할 때 부모 창에 알림 메시지를 보내는 자식 창입니다.

애플리케이션은 이러한 알림 메시지에 의존하여 사용자가 원하는 작업을 결정합니다. 대부분의 일반적인 컨트롤은 알림 메시지를 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 저장됩니다.

참고 항목

컨트롤 만들기 및 사용
컨트롤