Check the documentation which says:
Quote
The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
Remarks
Use the following code to obtain the horizontal and vertical position:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
Important Do not use the LOWORD or HIWORD macros to extract the x- and y- coordinates of the cursor position because these macros return incorrect results on systems with multiple monitors. Systems with multiple monitors can have negative x- and y- coordinates, and LOWORD and HIWORD treat the coordinates as unsigned quantities.
Note the "Important" section. You are using those macros.
If you use the GET_X_LPARAM and GET_Y_LPARAM macros it will be the coordinate relative to the upper-left corner of the client area.
looks like frob found your problem back on the 28th.
also looks like i should mod my code to support multiple monitors!