Индекс координат щелчка мыши начинается с 0 или с 1? - PullRequest
0 голосов
/ 01 ноября 2011

В Win32 координаты, возвращаемые вызовами GET_X_PARAM и GET_Y_PARAM, начинаются с 0 или с 1? Если у меня экран с разрешением 640X480, то какие значения я получу? Они от 0 до 639 и от 0 до 479? Или от 1 до 640 и от 1 до 480?

extern "C" LRESULT CALLBACK WindowProc (HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)  
{  
      Switch(message)  
      {  
            case WM_MOUSEMOVE:              
                  iXPosition = GET_X_LPARAM(lParam);   
                  iYPosition = GET_Y_LPARAM(lParam);  
      }  
}

Ответы [ 2 ]

5 голосов
/ 01 ноября 2011

Для WM_MOUSEMOVE координаты относятся к клиентской области окна , а не к экрану - см. MSDN .Учитывая это, точки начинаются с 0,0 для верхнего левого угла клиентской области окна.

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

3 голосов
/ 01 ноября 2011

Значение начинается с нуля, а не с единицы

...