본문 바로가기
New/MFC 윈도우 프로그래밍

3. 메시지 처리 (2)

by onenewkong 2024. 12. 11.

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 값이 음수인지 양수인지만 검사해서 처리하면 됨

 

실습

한 번 더 마우스 좌클릭 시, 아까 상태로 돌아간다.
예(Y) 버튼을 클릭하면 동작이 멈춘다.

 

'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