LOWORD或HIWORD宏得到的是一个无符号WORD类型的数

今天做一个小程序时,在那个窗口设置了SetCapture来捕获鼠标,然后那个窗口的WM_MOUSEMOVE消息里通过LOWORD和HIWORD宏获取当前鼠标位置时遇到这个问题,当鼠标移动到窗口外左边时,LOWORD(lParam)将得到一个非常大的x坐标,原因就是这个时候鼠标的x坐标相对于客户区左上角是负数。所以可以将LOWORD(lParam)进行强制转换为short类型处理。

下面贴下MSDN的说明:

1 WORD LOWORD(
2       DWORD  dwValue
3 );

LOWORD将DWORD的低字返回,HIWORD则是将DWORD的高字返回。

以上是MSDN给出的WORD及DWORD的声明,可以看到WORD是无符号short类型,DWORD是无符号的long类型。

原文地址:https://www.cnblogs.com/wnarutou/p/2700750.html