WM_POINTERLEAVE 메시지
포인터가 창 위로 검색 범위를 벗어나거나 포인터가 창 경계 밖으로 이동할 때 창으로 전송됩니다.
창은 WindowProc 함수를 통해 이 메시지를 받습니다.
! [중요]
데스크톱 앱은 DPI를 인식해야 합니다. 앱이 DPI를 인식하지 못하는 경우 DPI 가상화로 인해 포인터 메시지 및 관련 구조에 포함된 화면 좌표가 부정확하게 나타날 수 있습니다. DPI 가상화는 DPI를 인식하지 못하고 기본적으로 활성 상태인 애플리케이션에 대한 자동 크기 조정 지원을 제공합니다(사용자가 해제할 수 있음). 자세한 내용은 High-DPI Win32 애플리케이션 작성을 참조하세요.
#define WM_POINTERLEAVE 0x024A
매개 변수
-
wParam
-
포인터 식별자 및 추가 정보를 포함합니다. 다음 매크로를 사용하여 이 정보를 검색합니다.
- GET_POINTERID_WPARAM(wParam): 포인터 식별자입니다.
- IS_POINTER_INRANGE_WPARAM(wParam): 검색 범위를 남기지 않은 포인터에 의해 이 메시지가 생성되었는지 여부를 나타냅니다. 포인터가 창의 검색 범위를 벗어나면 이 플래그가 설정되지 않습니다.
- IS_POINTER_INCONTACT_WPARAM(wParam): 이 메시지가 접촉 중인 포인터에 의해 생성되었는지 여부를 나타내는 플래그입니다. 검색 범위(가리키기)의 포인터에 대해 이 플래그가 설정되지 않았습니다.
-
lParam
-
포인터의 점 위치를 포함합니다.
참고
포인터가 사소한 영역이 아닌 영역에서 디바이스와 접촉할 수 있으므로 이 지점 위치는 더 복잡한 포인터 영역의 단순화일 수 있습니다. 가능하면 애플리케이션은 지점 위치 대신 전체 포인터 영역 정보를 사용해야 합니다.
다음 매크로를 사용하여 점의 실제 화면 좌표를 검색합니다.
- GET_X_LPARAM(lParam): x(가로 점) 좌표입니다.
- GET_Y_LPARAM(lParam): y(세로 점) 좌표입니다.
반환 값
애플리케이션이 이 메시지를 처리하면 0을 반환해야 합니다.
애플리케이션이 이 메시지를 처리하지 않는 경우 DefWindowProc을 호출해야 합니다.
설명
WM_POINTERLEAVE 알림은 창 화면에서 포인터가 있는 동안 모드를 변경하거나 사용자에게 피드백을 중지하는 데 사용할 수 있습니다.
이 알림은 포인터에 대한 입력을 수신하는 창으로만 전송됩니다. 다음 표에서는 이 알림이 전송되는 몇 가지 상황을 나열합니다.
작업 | 플래그 집합 | 보낸 알림 |
---|---|---|
마우스로 가리키면 포인터가 창 경계를 넘습니다. | IS_POINTER_INRANGE_WPARAM | 포인터가 이동한 경계 외부의 창입니다. |
포인터가 검색 범위를 벗어났습니다. | 해당 없음 | 포인터가 검색 범위를 벗어나는 창입니다. |
! [중요]
창에서 포인터 캡처가 손실되고 WM_POINTERCAPTURECHANGED 알림을 받으면 일반적으로 추가 알림을 받지 않습니다. 따라서 균등하게 페어링된 WM_POINTERDOWN WM_POINTERUP 또는 WM_POINTERLEAVE/알림을WM_POINTERENTER/ 가정하지 않는 것이 중요합니다.
입력 디지타이저를 사용하여 접촉이 유지되고 포인터가 창 밖으로 이동하면 WM_POINTERLEAVE 생성되지 않습니다. WM_POINTERLEAVE 마우스 포인터가 창 경계를 넘거나 접촉이 종료되는 경우에만 생성됩니다.
입력 이 마우스 디바이스에서 시작된 경우 WM_POINTERLEAVE 게시된 메시지 큐에 게시됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows 8 [데스크톱 앱만 해당] |
지원되는 최소 서버 |
Windows Server 2012 [데스크톱 앱만 해당] |
헤더 |
|