WPARAM与LPARAM的高位与低位问题

在写消息处理函数时,常会遇到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 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值