듀얼 모니터에서의 좌표값 확인
듀얼모니터를 사용하는 경우 윈도우나 마우스의 좌표가 음수(-)값이 나올 수 있다.
디스플레이 설정에서 우측의 모니터를 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
'Windows Programming' 카테고리의 다른 글
[Win32] Windows Message – Control 제어 (0) | 2009.06.02 |
---|---|
Windows Mobile 전원 상태 감시 (0) | 2008.08.12 |
COM DLL만으로 tlb파일 생성및 COM사용하기 (0) | 2008.04.28 |
Afx의 의미 (0) | 2008.04.14 |
스크린 크기 구하기 (0) | 2008.04.02 |