鼠标点击坐标的索引从0开始或从1开始?

时间:2011-11-01 11:42:16

标签: c++ windows winapi screen resolution

在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 个答案:

答案 0 :(得分:5)

对于WM_MOUSEMOVE,坐标是相对于窗口的客户区,而不是屏幕 - 请参阅MSDN。鉴于此,窗口客户区左上角的点开始于0,0。

另请注意,如果使用返回基于屏幕的鼠标坐标的API(如GetCursorPos),则可以在多监视器系统上获得负值:0,0是主监视器的左上角,可以在其上方或左侧设置辅助监视器;所以实际桌面可能会以负值或其他非0,0值“开始”。 (例如,GetSystemMetrics(SM_XVIRTUALSCREEN)将返回左边缘。)

答案 1 :(得分:3)

该值从零开始,而不是基于一个