듀얼모니터를 사용하는 경우 윈도우나 마우스의 좌표가 음수(-)값이 나올 수 있다.
디스플레이 설정에서 우측의 모니터를 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
'Programming > WinAPI' 카테고리의 다른 글
문자열 함수 (멀티바이트->유니코드->TCHAR) (0) | 2014.07.18 |
---|---|
오토제작!! 매크로제작 (0) | 2011.09.18 |
클립보드에서 데이터 얻기와 데이터 쓰기 (0) | 2011.09.16 |
Basic DialogBox(메인창을 다이얼로그박스로 띄우기) (0) | 2011.09.14 |