본문 바로가기

Programming/API

마우스의 입력

윈도즈에서 키보드와 함께 가장 많이 쓰이는 입력장치가 있다. 바로 마우스 인데 키보드 입력에 이어 마우스 입력에 대하여 보도록 하겠다.

api명령어를 통하여 우리가 사용하는 평범한 마우스부터, 노트북의 터치패드, 트랙볼, 타블릿 등 마우스의 역할을 하는 모든 것들을 메시지를 통하여  마우스 입력 처리가 가능하다.

마우스 입력에 관한 메시지는 다음과 같다.


누름 놓음 더블클릭

좌측 WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK

우측 WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK

중앙 WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTONDBLCLK


그리고 마우스 휠에 대한 메시지는 WM_MOUSEWHEEL이 있는데 0~120까지는 휠을 위로 굴리는경우, 0~-120인 경우는 마우스 휠을 뒤로 굴리는 경우이다. 마우스 휠이 마우스 중앙 버튼역할을 하기 때문에 마우스 휠 클릭을 사용하고싶은 경우에는 WM_MBUTTONDOWN 메시지를 사용하면된다.

마우스 키 누르는 것에 대한 메시지 말고도 마우스 이동에 대한 메시지로 WM_MOUSEMOVE 메시지도 있다.


그리고 조합키에 대한 메시지도 있다.


MK_CONTROL - Ctrl키가 눌려져 있는 경우

MK_SHIFT   - Shift키가 눌려져 있는 경우

MK_LBUTTON - 마우스 왼쪽 버튼이 눌려져 있는 경우

MK_MBUTTON - 마우스 가운데 버튼이 눌려져 있는 경우

MK_RBUTTON - 마우스 오른쪽 버튼이 눌려져 있는 경우


lParam에 마우스 커서의 위치가 전달되며 wParam에 마우스 버튼 상태와 Ctrl, Shift와 같은 조합 키의 상태가 전달된다.


더블클릭 메시지를 이용하려면 WndClass.style=CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;

코드에 이런식으로 더블클릭을 지원하도록 추가를 해줘야 한다.

왜냐하면 더블클릭이 아닌 클릭을 두번하는 것을 받기를 원하는 것일수도 있기때문에 더블클릭을 꼭 필요로 할 경우에 더블클릭을 지원 할 수 있도록 하고있다.

'Programming > API' 카테고리의 다른 글

타이머  (0) 2013.08.14
tchar 매핑테이블  (0) 2013.08.13
무효화 영역과 InvalidateRect 함수  (0) 2013.08.09
WM_CHAR 메시지와 WM_KEYDOWN 메시지  (0) 2013.08.08
가상키코드  (0) 2013.08.08