而在Win32编程中,还会经常涉及到WPARAM、LPARAM和LRESULT类型,同样也需要将一些值合成为这些参数,或者提取LPARAM类型参数中的坐标值。
所以这些宏可以让我们处理这些问题就很简单了。
合成拆分的数据宏列表以及代码使用示例如下:
DWORD dwValue=100;
WORD wValue = 200;
WORD wValHighWord = HIWORD(dwValue); //提取DWORD的高WORD的值
WORD wValLowWord = LOWORD(dwValue); //提取DWORD的低WORD的值
BYTE byValHighByte = HIBYTE(wValue); //提取WORD的高BYTE的值
BYTE byValLowByte = LOBYTE(wValue); //提取WORD的低BYTE的值
DWORD dwValue2 = MAKELONG(wValLowWord,wValHighWord); //合成DWORD(LONG)类型的值
WORD wValue2 = MAKEWORD(byValLowByte,byValHighByte); //合成WORD类型的值
// - dwValue和dwValue2是相同的。dwValue按照高字和低字被拆分为wValHighWord和wValLowWord,然后又合并为dwValue2。同理,wValue和wValue2也是相同的。
// - 合成类型的宏MAKELONG和MAKEWORD的两个参数,第一个参数都是低的部分,第二个参数为高的部分。
// - MAKEWPARAM、MAKELPARAM和MAKELRESULT和MAKELONG是一样的,都是合成LONG类型的值,只是宏名称不一样罢了。
LPARAM lParam = 12;
// - GET_X_LPARAM和GET_Y_LPARAM定义于windowsx.h头文件中
// - GET_X_LPARAM //提取LPARAM参数中的X值
// - GET_Y_LPARAM //提取LPARAM参数中的Y值
int x = GET_X_LPARAM(lParam);
int y = GET_Y_LPARAM(lParam);
WORD wLow=100;
WORD wHigh = 200;
WPARAM WParam = MAKEWPARAM(wLow,wHigh); //合成WPARAM参数的值,WPARAM即DWORD
LPARAM lParam = MAKEWPARAM(wLow,wHigh); //合成LPARAM参数的值,LPARAM即DWORD
LRESULT lResult = MAKEWPARAM(wLow,wHigh); //合成LRESULT参数的值,WPARAM即DWORD
说明:合成类型的都是低字或者低字节在第一个参数,高字或者高字节放在第二个参数,注意哦。返回类型都在代码中表示出来了。