在写消息处理函数时,常会遇到WPARAM与LPARAM这两个参数,这两个参数都是DWORD类型的,也就是双字或四字节或32位长度的。有时想取这些参数里的高位字或低位字,用什么方法呢?查MSDN说有两个宏函数可用:
取高位字:
WORD HIWORD( DWORD dwValue);
取低位字:
WORD LOWORD( DWORD dwValue);
那么WORD类型的怎么取高位和低位呢?同样的也有两个宏函数可用:
取高位字节:
BYTE HIBYTE( WORD wValue );
取低位字节:
BYTE LOBYTE( WORD wValue);
知道怎么取高位低位了,还要怎么拼装WORD和DWORD,也是用宏函数:
拼WORD:
WORD MAKEWORD(
BYTE bLow,
BYTE bHigh
);
拼DWORD:
DWORD MAKELONG(
WORD wLow,
WORD wHigh
);
拼WPARAM:
WPARAM MAKEWPARAM(
WORD wLow,
WORD wHigh
);
拼LPARAM:
LPARAM MAKELPARAM(
WORD wLow,
WORD wHigh
);
不知道为什么WPARAM也是DWORD,拼WPARAM和LPARAM就另外做了宏函数,不直接用DWORD就算了。
看了看DELPHI里的源码,MAKEWPARAM和MAKELPARAM最终是调用了MAKELONG,不知VC等其它开发工具是不是这样呢?
---------------------
作者:onebigday
来源:CSDN
原文:https://blog.csdn.net/onebigday/article/details/5483028
版权声明:本文为博主原创文章,转载请附上博文链接!