728x90
반응형
Windows 프로그래밍을 하다보면 32bit 자료형인 DWORD를 쪼개야 할때가 생긴다. 예를 들면 WM_LBUTTONDOWN와 같은 마우스 메시지의 lParam변수에는 마우스 좌표가 들어 있는데, X축은 하위 16비트, Y축은 상위 16비트에 존재 한다. 이때 상위, 하위 16비트를 쪼개어야 X축 Y축을 알 수 있다.
그렇다면 대충 코드 비트연산을 다음과 같이 할 수 있을 것이다.
DWORD dwXPos = ((((DWORD)lParam)) & 0xffff);
DWORD dwYPos = ((((DWORD)lParam >> 16)) & 0xffff);
이렇게 할 수 있지만 상당히 거추장스러운 코드 처럼 보인다. 이렇게 가독성이 떨어지는 코드를 막기위해 Windows SDK에서는 매크로를 정의해 놓았다. 바로 HIWORD, LOWORD이다.
매크로를 써서 DWORD를 쪼개려면 다음과 같이 하면된다.
DWORD dwXPos = (DWORD)LOWORD(lParam);
DWORD dwYPos = (DWORD)HIWORD(lParam);
한결 깔끔해진 코드를 만나볼 수 있다. 적극 사용 권장 한다.
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)
728x90
반응형
'개발 > Windows' 카테고리의 다른 글
[Win32] 메시지 루프는 어떻게 창에 메시지를 전달할까? (0) | 2022.07.31 |
---|---|
[Win32] 윈도우의 닫기 버튼을 눌렀을 때 일어 나는 일 (WM_CLOSE) (1) | 2022.07.31 |
리소스 문자열을 CString으로 불러오는 법 (win32,mfc) (0) | 2022.03.02 |
OpenJDK 다운로드 , 마이크로소프트에서 받자. (0) | 2022.02.25 |
[Win32] WM_ERASEBKGND에서 리턴 값의 의미? (0) | 2022.02.24 |
댓글