Для WM_MOUSEMOVE координаты относятся к клиентской области окна , а не к экрану - см. MSDN .Учитывая это, точки начинаются с 0,0 для верхнего левого угла клиентской области окна.
Также обратите внимание, что если вы используете API, который возвращает экранные координаты мыши, такие как GetCursorPos, вы можетевернуть отрицательные значения в систему с несколькими мониторами: 0,0 - верхний левый угол основного монитора, для которого может быть установлен дополнительный монитор выше или слева от него;поэтому фактический рабочий стол может «начинаться» с отрицательного или другого значения, отличного от 0,0.(GetSystemMetrics (SM_XVIRTUALSCREEN) вернет левый край, например.)