WPARAM与LPARAM的高位与低位问题

在写消息处理函数时,常会遇到WPARAM与LPARAM这两个参数,这两个参数都是DWORD类型的,也就是双字或四字节或32位长度的。有时想取这些参数里的高位字或低位字,用什么方法呢?查MSDN说有两个宏函数可用:

取高位字:

WORD HIWORD( DWORD dwValue);

取低位字:

WORD LOWORD( DWORD dwValue);

那么WORD类型的怎么取高位和低位呢?同样的也有两个宏函数可用:

取高位字节:

BYTE HIBYTE(  WORD wValue );


取低位字节:

扫描二维码关注公众号,回复: 5352418 查看本文章

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等其它开发工具是不是这样呢?


转载地址:http://blog.csdn.net/onebigday/article/details/5483028

猜你喜欢

转载自blog.csdn.net/qq_37947654/article/details/79445723