学习LOWORD、 HIWORD、LOBYTE、HIBYTE

来源:互联网 发布:淘宝团购提醒在哪里 编辑:程序博客网 时间:2024/06/16 13:30
对消息的处理中我们经常需要将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))