当前位置:C++技术网 > 资讯 > DWORD、WORD的高低部分提取和合成宏代码示例

DWORD、WORD的高低部分提取和合成宏代码示例

更新时间:2015-12-05 21:31:08浏览次数:1+次

    在Win32编程或者MFC编程中,经常涉及都DWORD、WORD的数据类型的处理,而经常要用这两种类型的数据存储两个值,或者用两个值合成一个值。微软已经给我们提供了相关的小工具,用来合成拆分DWORD和WORD值。
    而在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
    说明:合成类型的都是低字或者低字节在第一个参数,高字或者高字节放在第二个参数,注意哦。返回类型都在代码中表示出来了。