728x90
'나우캠퍼스X아워즈팜'유튜브의 'Win32 API 6강. 키보드와 마우스, 타이머 (2/3)'영상을 보고 정리한 내용입니다.
마우스 관련 메시지
마우스도 컴퓨터의 주변 장치이기 때문에 운영체제가 먼저 감지를 하며 메시지 형태로 응용프로그램에 전달이 됩니다.
마우스를 움직이거나 클릭, 스크롤, 드래그할 수 있습니다. 이런 움직임이 전부 메시지로 전달이 됩니다.
WM_MOUSEMOVE
- 마우스가 이동할 때 발생하는 메시지이다.
- 부가적인 정보를 lPram에 담아오는데 lParam에 마우스 위치 정보(이동한 현재의 마우스 위치)가 담겨진다. x, y 좌표는 2바이트씩 잘라서 알아낼 수 있다.
마우스의 x좌표 : LOWORD(lParam) -> (하위 2바이트)
마우스의 y좌표 : HIWORD(lParam) -> (상위 2바이트)
그 외 마우스 메시지
- WM_LBUTTONDOWN : 마우스 왼쪽 버튼 클릭
- WM_LBUTTONUP : 마우스 왼쪽 버튼 놓임
- WM_RBUTTONDOWN : 마우스 오른쪽 버튼 클릭
- WM_RBUTTONUP : 마우스 오른쪽 버튼 놓임
- 위와 같은 메시지들이 발생할 때마다 lParam에 마우스의 위치 정보가 들어온다.(WM_MOUSEMOVE 메시지와 마찬가지!)
마우스 드래그를 할 때
- 왼쪽 버튼을 누른 상태에서 이동을 할 때 마우스는 드래그를 하고 있는 상태이다.(클릭된 상태에서 이동을 할 때)
- 마우스가 이동(WM_MOUSEMOVE메시지가 발생)할 때 부가적인 정보를 담고 있는 wParam이 따로 있는데 마우스의 상태를 담고 있다. 마우스의 상태는 마우스 버튼 코드로 전달이 된다. 마우스 버튼 코드는 MK_LBUTTON, MK_MBUTTON, MK_RBUTTON, MK_CONTROL,MK_SHIFT 등이 있다.
- WM_MOUSEMOVE 메시지가 발생하였고 wParam에 MK_LBUTTON이 있다면 드래그중인 상태이고 그렇지 않게 된다면 드래그를 하지 않고 있는 상태이다.
오류가 있다면 알려주시면 감사하겠습니다!
'무작정 따라해보기(정리, 문제풀기) > Win32API' 카테고리의 다른 글
21. WIN32API 프로그래밍 - 모달형 다이얼로그 (0) | 2021.09.03 |
---|---|
20. WIN32API 프로그래밍 - 타이머 관련 (0) | 2021.09.02 |
18. Win32API 프로그래밍 - 키보드 입력 (0) | 2021.08.30 |
17. [WIN32API 프로그래밍] GDI오브젝트와 메모리DC를 이용하여 비트맵 이미지 출력하기 (0) | 2021.08.29 |
16. [WIN32API 프로그래밍] 그래픽 오브젝트 (0) | 2021.08.28 |