다음을 통해 공유


WM_NCHITTEST 메시지

창의 어느 부분이 특정 화면 좌표에 해당하는지 확인하기 위해 창으로 보내집니다. 이런 상황은 예를 들어, 커서가 움직일 때, 마우스 단추를 누르거나 놓을 때 또는 WindowFromPoint와 같은 함수 호출에 대한 응답으로 발생할 수 있습니다. 마우스가 캡처되지 않으면 커서 아래 창으로 메시지가 보내집니다. 그렇지 않으면 마우스를 캡처한 창으로 메시지가 보내집니다.

창은 WindowProc 함수를 통해 이 메시지를 받습니다.

#define WM_NCHITTEST                    0x0084

매개 변수

wParam

이 매개 변수는 사용되지 않습니다.

lParam

하위 단어는 커서의 x 좌표를 지정합니다. 좌표는 화면의 왼쪽 위 모서리를 기준으로 합니다.

상위 단어는 커서의 y 좌표를 지정합니다. 좌표는 화면의 왼쪽 위 모서리를 기준으로 합니다.

반환 값

DefWindowProc 함수의 반환 값은 커서 핫 스폿의 위치를 나타내는 다음 값 중 하나입니다.

반환 코드/값 설명
HTBORDER
18
크기 조정 테두리가 없는 창의 테두리에 있습니다.
HTBOTTOM
15
크기 조정 가능한 창의 아래쪽 가로 테두리에 있습니다. 사용자가 마우스를 클릭하여 창의 크기를 세로로 조정할 수 있습니다.
HTBOTTOMLEFT
16
크기 조정 가능한 창의 왼쪽 아래 가로 테두리에 있습니다. 사용자가 마우스를 클릭하여 창의 크기를 가로로 조정할 수 있습니다.
HTBOTTOMRIGHT
17
크기 조정 가능한 창의 오른쪽 아래 가로 테두리에 있습니다. 사용자가 마우스를 클릭하여 창의 크기를 가로로 조정할 수 있습니다.
HTCAPTION
2
제목 표시줄에 있습니다.
HTCLIENT
1
클라이언트 영역에 있습니다.
HTCLOSE
20
닫기 단추에 있습니다.
HTERROR
-2
화면 배경 또는 창 간 구분선에 있습니다(DefWindowProc 함수에서 오류를 나타내는 시스템 경고음을 생성한다는 점을 제외하고 HTNOWHERE과 동일).
HTGROWBOX
4
크기 상자에 있습니다(HTSIZE와 동일).
HTHELP
21
도움말 단추에 있습니다.
HTHSCROLL
6
가로 스크롤 막대에 있습니다.
HTLEFT
10
크기 조정 가능한 창의 왼쪽 테두리에 있습니다. 사용자가 마우스를 클릭하여 창의 크기를 가로로 조정할 수 있습니다.
HTMENU
5
메뉴에에 있습니다.
HTMAXBUTTON
9
최대화 단추에 있습니다.
HTMINBUTTON
8
최소화 단추에 있습니다.
HTNOWHERE
0
화면 배경 또는 창 간 구분선에 있습니다.
HTREDUCE
8
최소화 단추에 있습니다.
HTRIGHT
11
크기 조정 가능한 창의 오른쪽 테두리에 있습니다. 사용자가 마우스를 클릭하여 창의 크기를 가로로 조정할 수 있습니다.
HTSIZE
4
크기 상자에 있습니다(HTGROWBOX와 동일).
HTSYSMENU
3
창 메뉴 또는 자식 창의 닫기 단추에 있습니다.
HTTOP
12
창의 위쪽 가로 테두리에 있습니다.
HTTOPLEFT
13
창 테두리의 왼쪽 위 모서리에 있습니다.
HTTOPRIGHT
14
창 테두리의 오른쪽 위 모서리에 있습니다.
HTTRANSPARENT
-1
현재 동일한 스레드의 다른 창으로 가려진 창에 있습니다(기본 창 중 하나가 HTTRANSPARENT가 아닌 코드를 반환할 때까지 메시지가 동일한 스레드의 기본 창으로 전송됨).
HTVSCROLL
7
세로 스크롤 막대에 있습니다.
HTZOOM
9
최대화 단추에 있습니다.

설명

다음 코드를 사용하여 가로 및 세로 위치를 가져옵니다.

xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam);

위에서 설명한 대로 x 좌표는 반환 값의 하위 short에 있고 y 좌표는 반환 값의 상위 short에 있습니다. 둘 다 여러 모니터가 있는 시스템에서 음수 값을 사용할 수 있으므로 부호 있는 값을 나타냅니다. 반환 값이 변수에 할당된 경우 MAKEPOINTS 매크로를 사용하여 반환 값에서 POINTS 구조체를 가져올 수 있습니다. GET_X_LPARAM 또는 GET_Y_LPARAM 매크로를 사용하여 x 또는 y 좌표를 추출할 수도 있습니다.

중요

LOWORD 또는 HIWORD 매크로는 여러 모니터가 있는 시스템에서 잘못된 결과를 반환하므로 이 매크로를 사용하여 커서 위치의 x 및 y 좌표를 추출하지 마세요. 모니터가 여러 개 있는 시스템에는 음수 x 및 y 좌표가 있을 수 있으며 LOWORDHIWORD는 좌표를 부호 없는 수량으로 처리합니다.

Windows Vista: 표준 캡션 단추를 포함하는 사용자 지정 프레임을 만들 때 이 메시지는 먼저 DwmDefWindowProc 함수에 전달되어야 합니다. 이렇게 하면 DWM(데스크톱 창 관리자)이 캡션 단추에 대한 적중 테스트를 제공할 수 있습니다. DwmDefWindowProc에서 메시지를 처리하지 않는 경우 WM_NCHITTEST의 추가 처리가 필요할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버
Windows 2000 Server[데스크톱 앱만]
헤더
Winuser.h(Windowsx.h 포함)

추가 정보

참조

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

개념

마우스 입력

기타 리소스

MAKEPOINTS

POINTS