3.3 마우스 메시지 (Mouse Message)
자주 사용하는 마우스 메시지와 메시지 핸들러 함수
메시지 유형 | 발생 상황 | 메시지 핸들러 함수 |
WM_MOUSEMOVE | 마우스를 이동 | OnMouseMove() |
WM_LBUTTONDBLCLK | 왼쪽 마우스 버튼을 더블 클릭 | OnLButtonDblClk() |
WM_LBUTTONDOWN | 왼쪽 마우스 버튼을 누름 | OnLButtonDown() |
WM_LBUTTONUP | 왼쪽 마우스 버튼을 놓음 | OnLButtonUp() |
WM_RBUTTONDBLCLK | 오른쪽 마우스 버튼을 더블 클릭 | OnRButtonDblClk() |
WM_RBUTTONDOWN | 오른쪽 마우스 버튼을 누름 | OnRButtonDown() |
WM_RBUTTONUP | 오른쪽 마우스 버튼을 놓음 | OnRButtonUp() |
WM_MOUSEWHEEL | 마우스 휠을 움직임 | OnMouseWheel() |
- 마우스의 메시지 핸들러 함수들을 살펴보면 nFlags와 point라는 매개변수를 제공함
- nFlags: 버튼이 눌리면서 키보드에서 특정한 키가 눌러졌을 때의 값이나 마우스 눌린 값
- point: 클라이언트 영역의 현재 마우스 좌표값을 CPoint 클래스 형식으로 제공함
- 윈도우의 클라이언트 영역은 좌측 상단 좌표가 (0, 0)인 상대좌표
nFlags가 가질 수 있는 값
- MK_CONTROL: Ctrl 키가 눌림
- MK_LBUTTON: 왼쪽 마우스 버튼 눌림
- MK_MBUTTON: 가운데 마우스 버튼 눌림
- MK_RBUTTON: 오른쪽 마우스 버튼 눌림
- MK_SHIFT: Shift 키가 눌림
WM_WHEELMOUSE 메시지의 핸들러 함수는 OnMouseWheel()인데, 다른 마우스 메시지 핸들러 함수와 달리 nFlags와 point 인자 외에 추가 정보를 가지는 zDelta라는 인자가 있음
- zDelta 인자에는 휠이 어느 방향으로 움직였는지에 대한 정보가 들어 있음
- 휠을 안쪽으로 끌어당기듯 돌리면 zDelta 값이 음수가 됨
- 휠을 밖으로 밀면 zDelta 값이 양수가 됨
- 이 값은 120의 배수인데, 휠을 천천히 돌리면 값은 120이고 휠을 빠르게 돌리면 240 또는 360이 되기도 함
- 휠의 회전 속도를 이용하여 화면의 스크롤 속도 등을 제어함
- 이러한 기능이 필요 없다면 zDelta 값이 음수인지 양수인지만 검사해서 처리하면 됨
실습
'New > MFC 윈도우 프로그래밍' 카테고리의 다른 글
4. 대화상자 (1) (0) | 2024.12.15 |
---|---|
3. 메시지 처리 (3) (0) | 2024.12.14 |
3. 메시지 처리 (1) (0) | 2024.12.08 |
2. MFC 개요 및 아키텍처 (2) (0) | 2024.12.07 |
2. MFC 개요 및 아키텍처 (1) (0) | 2024.12.02 |