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

Har*_*ish 0 c++ windows winapi resolution screen

在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);  
      }  
}
Run Code Online (Sandbox Code Playgroud)

Bre*_*McK 5

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

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