Windows Programming

듀얼 모니터에서의 좌표값 확인

좋은향기 2008. 7. 4. 17:45
반응형

듀얼 모니터에서의 좌표값 확인

 

듀얼모니터를 사용하는 경우 윈도우나 마우스의 좌표가 음수(-)값이 나올 수 있다.
디스플레이 설정에서 우측의 모니터를 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://msdn.microsoft.com/en-us/library/ms534600(VS.85).aspx

 

 

반응형