달력

112024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

듀얼모니터를 사용하는 경우 윈도우나 마우스의 좌표가 음수(-)값이 나올 수 있다.
디스플레이 설정에서 우측의 모니터를 Primary모니터로 잡는 경우, 우측 모니터의 좌 상단이 (0,0)좌표가 되며, 왼쪽 모니터의 X좌표는 음수 값을 갖게 된다.

마우스나 윈도우의 좌표를 LPARAM의 전달하는 메시지의 경우,
보통 HIWORD(lParam), LOWORD(lParam)를 사용해서 좌표를 파싱하게 되는데

HIWORD()
LOWORD() 매크로의 경우, WORD값 즉 양수만을 리턴 하므로 정상적인 좌표가 계산되지 않는다.

이경우,

HIWORD() 대신 GET_X_LPARAM()
LOWORD() 대신 GET_Y_LPARAM()

을 사용하면 정상적인 좌표값을 얻울 수 있다.

 

GET_X_LPARAM()GET_Y_LPARAM()은 다음과 같이 정의 되어 있으며, <windowsx.h>에 정의되어 있다.

#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
#define GET_Y_LPARAM(lp) ((int)(short
)HIWORD(lp))

참고로 HIWORD() LOWORD()의 정의는 다음과 같다

#define HIWORD(l) ((WORD) (((DWORD) (l) >> 16) & 0xFFFF))
#define LOWORD(l) ((WORD) (l))

출처 : http://thepassion.tistory.com/32

Posted by 위너즈
|