프로그래밍/언어_스크립트
LOWORD() / HIWORD()
써드아이
2010. 10. 14. 23:34
① INT nX = LOWORD( lParam );
INT nY = HIWORD( lParam );
INT nY = (INT)(SHORT) HIWORD( lParam );
LPARAM 이 마우스 포인트 일 때 위 두개의 문장이 무슨 차이가 있을까?
어차피 상위 16 비트는 y 값, 하위 16 비트는 x값으로 동일 하다.
하지만 SetCapture() 함수와 연결 되었을 때 얘기는 달라진다.
어플의 화면 영역 좌표를 x1, y1, x2, y2라고 할 때
SetCapture 함수가 실행되면 ReleaseCapture 함수가 실행 되기 전까지
마우스가 x1, y1, x2, y2 영역을 벗어나도 메세지를 받을 수 있게 되는데..
마우스가 x1, y1 영역으로(마이너스 쪽으로) 벗어나는 경우에 대해서
① 는 정확한 값을 가져오지 못 한다. 65535 만 계속 가져오고
② 와 같이 사용해야 정확한 마이너스 값을 읽을 수 있다.
물론 플러스 쪽으로는 아무 문제 없고...
이거 때문에 또 얼마나 많은 삽질의 시간을 보낸건지.....