学习LOWORD、 HIWORD、LOBYTE、HIBYTE

对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如:

LPARAM lParam;
WORD loValue = LOWORD(lParam);///取低16位
WORD hiValue = HIWORD(lParam);///取高16位

  对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如:

WORD wValue;
BYTE loValue = LOBYTE(wValue);///取低8位

BYTE hiValue = HIBYTE(wValue);///取高8位

定义代码如下:

#define LOWORD(l)           ((WORD)(((DWORD_PTR)(l)) & 0xffff)) #define HIWORD(l)           ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff)) #define LOBYTE(w)           ((BYTE)(((DWORD_PTR)(w)) & 0xff)) #define HIBYTE(w)           ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))

你可能感兴趣的:(学习LOWORD、 HIWORD、LOBYTE、HIBYTE)