본문 바로가기
개발/Windows

HIWORD, LOWORD 매크로, DWORD 쪼개기

by lucidmaj7 2022. 6. 16.
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) 

 

HIWORD macro (Windows)

Table of contents HIWORD macro Article 03/30/2018 2 minutes to read In this article --> Retrieves the high-order word from the specified 32-bit value. Syntax WORD HIWORD(  DWORD dwValue ); Parameters dwValue The value to be converted. Return value Type: W

docs.microsoft.com

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms632659(v=vs.85) 

 

LOWORD macro (Windows)

Table of contents LOWORD macro Article 03/30/2018 2 minutes to read In this article --> Retrieves the low-order word from the specified value. Syntax WORD LOWORD(  DWORD dwValue ); Parameters dwValue The value to be converted. Return value Type: WORD The

docs.microsoft.com

 

728x90
반응형

댓글