마우스 입력

이 섹션에서는 시스템이 애플리케이션에 마우스 입력을 제공하는 방법과 이 입력을 애플리케이션이 수신하고 처리하는 방법을 설명합니다.

섹션 내용

항목 설명
마우스 입력 정보
이 항목에서는 마우스 입력에 대해 설명합니다.
마우스 입력 사용
이 섹션에서는 마우스 입력과 관련된 작업을 다룹니다.
마우스 입력 참조

Functions

속성 설명
_TrackMouseEvent 마우스 포인터가 창을 벗어나거나 지정된 시간 동안 창 위에 있을 때 메시지를 게시합니다. 이 함수는 TrackMouseEvent가 있으면 호출하고 그렇지 않으면 에뮬레이트합니다.
BlockInput 키보드 및 마우스 입력 이벤트가 애플리케이션에 도달하지 못하도록 차단합니다.
DragDetect 마우스를 캡처하고 사용자가 왼쪽 단추를 놓거나, Esc 키를 누르거나, 지정된 점 주위의 끌기 사각형 밖으로 마우스를 이동할 때까지 이동을 추적합니다. 끌기 사각형의 너비와 높이는 GetSystemMetrics 함수에서 반환된 SM_CXDRAGSM_CYDRAG 값으로 지정됩니다.
EnableMouseInPointer 마우스가 포인팅 디바이스로 작동할 수 있도록 설정합니다.
EnableWindow 지정된 창 또는 컨트롤에 대한 마우스 및 키보드 입력이 가능하거나 가능하지 않도록 설정합니다. 입력이 가능하지 않으면 창은 입력(예: 마우스 클릭 및 키 누르기)을 받지 않습니다. 입력이 가능하게 설정되면 창은 모든 입력을 받습니다.
GetCapture 마우스를 캡처한 창에 대한 핸들(있는 경우)을 가져옵니다. 한 번에 하나의 창만 마우스를 캡처할 수 있습니다. 이 창은 커서가 테두리 내에 있는지 여부에 관계없이 마우스 입력을 받습니다.
GetDoubleClickTime 마우스의 현재 두 번 클릭 시간을 가져옵니다. 두 번 클릭은 마우스 단추를 두 번 연속으로 클릭하는 것이며, 두 번째 클릭은 첫 번째 클릭 후 지정된 시간 내에 발생합니다. 두 번 클릭 시간은 두 번 클릭의 첫 번째와 두 번째 클릭 사이에 발생할 수 있는 최대 시간(밀리초)입니다.
GetMouseMovePointsEx 마우스 또는 펜의 이전 좌표 기록을 최대 64개까지 검색합니다.
IsWindowEnabled 지정된 창에서 마우스 및 키보드 입력을 사용할 수 있는지 여부를 결정합니다.
ReleaseCapture 현재 스레드의 창에서 마우스 캡처를 해제하고 일반 마우스 입력 처리를 복원합니다. 마우스를 캡쳐한 창은 커서의 위치에 상관없이 모든 마우스 입력을 받습니다. 단, 커서핫 스폿이 다른 스레드의 창에 있는 동안 마우스 단추를 클릭한 경우는 제외됩니다.
SendInput 키 입력, 마우스 동작 및 단추 클릭을 합성합니다.
SetCapture 마우스 캡처를 현재 스레드에 속하는 지정된 창으로 설정합니다. SetCapture는 마우스가 캡처 창 위에 있을 때 또는 마우스가 캡처 창 위에는 동안 마우스 단추를 눌렀고 단추가 아직 눌려 있는 경우 마우스 입력을 캡처합니다. 한 번에 하나의 창만 마우스를 캡처할 수 있습니다.
마우스 커서가 다른 스레드에서 생성된 창 위에 있는 경우 시스템은 마우스 단추가 눌린 경우에만 마우스 입력을 지정된 창으로 전달합니다.
SetDoubleClickTime 마우스의 두 번 클릭 시간을 설정합니다. 두 번 클릭은 마우스 단추를 두 번 연속으로 클릭하는 것이며, 두 번째 클릭은 첫 번째 클릭 후 지정된 시간 내에 발생합니다. 두 번 클릭 시간은 두 번 클릭의 첫 번째와 두 번째 클릭 사이에 발생할 수 있는 최대 시간(밀리초)입니다.
SwapMouseButton 마우스 왼쪽 단추와 오른쪽 단추의 의미를 반대로 뒤바꾸거나 복원합니다.
TrackMouseEvent 마우스 포인터가 창을 벗어나거나 지정된 시간 동안 창 위에 있을 때 메시지를 게시합니다.

다음 함수는 더 이상 사용되지 않습니다.

함수 설명
mouse_event 마우스 동작 및 단추 클릭을 합성합니다.

알림

속성 설명
WM_APPCOMMAND 사용자가 애플리케이션 명령 이벤트를 생성했음을(예를 들어 마우스를 사용하여 애플리케이션 명령 단추를 클릭하거나 키보드에 애플리케이션 명령 키를 입력하여) 창에 알립니다.
WM_CAPTURECHANGED 마우스 캡처가 손실되고 있는 창에 보내집니다.
WM_LBUTTONDBLCLK 커서가 창의 클라이언트 영역에 있는 동안 사용자가 마우스 왼쪽 단추를 두 번 클릭하면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_LBUTTONDOWN 커서가 창의 클라이언트 영역에 있는 동안 사용자가 마우스 왼쪽 단추를 누르면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_LBUTTONUP 커서가 창의 클라이언트 영역에 있는 동안 사용자가 마우스 왼쪽 단추를 놓으면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_MBUTTONDBLCLK 커서가 창의 클라이언트 영역에 있는 동안 사용자가 마우스 가운데 단추를 두 번 클릭하면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_MBUTTONDOWN 커서가 창의 클라이언트 영역에 있는 동안 사용자가 마우스 가운데 단추를 누르면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_MBUTTONUP 커서가 창의 클라이언트 영역에 있는 동안 사용자가 마우스 가운데 단추를 놓으면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_MOUSEACTIVATE 커서가 비활성 창에 있을 때 사용자가 마우스 단추를 누르면 보내집니다. 이 메시지를 자식 창이 DefWindowProc 함수에 전달하는 경우에만 부모 창이 이 메시지를 받습니다.
WM_MOUSEHOVER TrackMouseEvent에 대한 이전 호출에서 지정된 기간 동안 커서가 창의 클라이언트 영역 위에 있을 때 창에 게시됩니다.
WM_MOUSEHWHEEL 마우스의 가로 스크롤 휠을 기울이거나 돌릴 때 포커스 창으로 보내집니다. DefWindowProc 함수는 메시지를 창의 부모에 전파합니다. 메시지의 내부 전달이 없어야 합니다. DefWindowProc가 메시지를 처리하는 창을 찾을 때까지 부모 체인 위로 메시지를 전파하기 때문입니다.
WM_MOUSELEAVE TrackMouseEvent에 대한 이전 호출에서 지정된 창의 클라이언트 영역을 커서가 벗어날 때 창에 게시됩니다.
WM_MOUSEMOVE 커서가 움직일 때 창에 게시됩니다. 마우스가 캡처되지 않으면 커서가 있는 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_MOUSEWHEEL 마우스 휠을 돌릴 때 포커스 창으로 보내집니다. DefWindowProc 함수는 메시지를 창의 부모에 전파합니다. 메시지의 내부 전달이 없어야 합니다. DefWindowProc가 메시지를 처리하는 창을 찾을 때까지 부모 체인 위로 메시지를 전파하기 때문입니다.
WM_NCHITTEST 창의 어느 부분이 특정 화면 좌표에 해당하는지 확인하기 위해 창으로 보내집니다. 이런 상황은 예를 들어, 커서가 움직일 때, 마우스 단추를 누르거나 놓을 때 또는 WindowFromPoint와 같은 함수 호출에 대한 응답으로 발생할 수 있습니다. 마우스가 캡처되지 않으면 커서 아래 창으로 메시지가 보내집니다. 그렇지 않으면 마우스를 캡처한 창으로 메시지가 보내집니다.
WM_NCLBUTTONDBLCLK 커서가 창의 비클라이언트 영역 내에 있는 동안 사용자가 마우스 왼쪽 단추를 두 번 클릭하면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCLBUTTONDOWN 커서가 창의 비클라이언트 영역 내에 있는 동안 사용자가 마우스 왼쪽 단추를 누르면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCLBUTTONUP 커서가 창의 비클라이언트 영역 내에 있는 동안 사용자가 마우스 왼쪽 단추를 놓으면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCMBUTTONDBLCLK 커서가 창의 비클라이언트 영역 내에 있는 동안 사용자가 마우스 가운데 단추를 두 번 클릭하면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCMBUTTONDOWN 커서가 창의 비클라이언트 영역 내에 있는 동안 사용자가 마우스 가운데 단추를 누르면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCMBUTTONUP 커서가 창의 비클라이언트 영역 내에 있는 동안 사용자가 마우스 가운데 단추를 놓으면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCMOUSEHOVER TrackMouseEvent에 대한 이전 호출에 지정된 기간 동안 커서가 창의 비클라이언트 영역 위에 있을 때 창에 게시됩니다.
WM_NCMOUSELEAVE TrackMouseEvent에 대한 이전 호출에서 지정된 창의 비클라이언트 영역을 커서가 벗어날 때 창에 게시됩니다.
WM_NCMOUSEMOVE 창의 비클라이언트 영역 내에서 커서를 이동할 때 창에 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCRBUTTONDBLCLK 커서가 창의 비클라이언트 영역 내에 있는 동안 사용자가 마우스 오른쪽 단추를 두 번 클릭하면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCRBUTTONDOWN 커서가 창의 비클라이언트 영역 내에 있는 동안 사용자가 마우스 오른쪽 단추를 누르면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCRBUTTONUP 커서가 창의 비클라이언트 영역 내에 있는 동안 사용자가 마우스 오른쪽 단추를 놓으면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCXBUTTONDBLCLK 커서가 창의 비클라이언트 영역에 있는 동안 사용자가 첫 번째 또는 두 번째 X 단추를 두 번 클릭하면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCXBUTTONDOWN 커서가 창의 비클라이언트 영역에 있는 동안 사용자가 첫 번째 또는 두 번째 X 단추를 누르면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_NCXBUTTONUP 커서가 창의 비클라이언트 영역에 있는 동안 사용자가 첫 번째 또는 두 번째 X 단추를 놓으면 게시됩니다. 이 메시지는 커서가 포함된 창에 게시됩니다. 창이 마우스를 캡처한 경우 이 메시지는 게시되지 않습니다.
WM_RBUTTONDBLCLK 커서가 창의 클라이언트 영역에 있는 동안 사용자가 마우스 오른쪽 단추를 두 번 클릭하면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_RBUTTONDOWN 커서가 창의 클라이언트 영역에 있는 동안 사용자가 마우스 오른쪽 단추를 두 번 누르면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_RBUTTONUP 커서가 창의 클라이언트 영역에 있는 동안 사용자가 마우스 오른쪽 단추를 놓으면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_XBUTTONDBLCLK 커서가 창의 클라이언트 영역에 있는 동안 사용자가 첫 번째 또는 두 번째 X 단추를 두 번 클릭하면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_XBUTTONDOWN 커서가 창의 클라이언트 영역에 있는 동안 사용자가 첫 번째 또는 두 번째 X 단추를 누르면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.
WM_XBUTTONUP 커서가 창의 클라이언트 영역에 있는 동안 사용자가 첫 번째 또는 두 번째 X 단추를 놓으면 게시됩니다. 마우스가 캡처되지 않으면 커서 아래 창에 메시지가 게시됩니다. 그렇지 않으면 마우스를 캡처한 창에 메시지가 게시됩니다.

구조체

속성 설명
HARDWAREINPUT 키보드나 마우스 외에 입력 디바이스에서 생성된 시뮬레이션된 메시지에 대한 정보를 포함합니다.
INPUT 키 입력, 마우스 이동 및 마우스 클릭과 같은 입력 이벤트를 합성하는 데 사용되는 정보를 포함합니다.
LASTINPUTINFO 마지막 입력 시간을 포함합니다.
MOUSEINPUT 시뮬레이션된 마우스 이벤트에 대한 정보를 포함합니다.
MOUSEMOVEPOINT 화면 좌표에서 마우스의 위치에 대한 정보를 포함합니다.
TRACKMOUSEEVENT 마우스 포인터가 창을 벗어나거나 지정된 시간 동안 창 위를 가리키는 경우를 TrackMouseEvent 함수가 추적하는 데 사용됩니다.