今天做一个小程序时,在那个窗口设置了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类型。