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



在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);  
      }  
}

对于WM_MOUSEMOVE,坐标相对于窗口的客户端区域,而不是屏幕-参见MSDN。考虑到这一点,对于窗口的客户端区域的左上角,点从0,0开始。

还要注意,如果你使用API返回基于屏幕的鼠标坐标,如GetCursorPos,你可以在多监视器系统上得到负值:0,0是主监视器的左上角,它可以有一个辅助监视器集在它的上方或左侧;因此,实际的桌面可能以负值或其他非0,0的值"启动"。(GetSystemMetrics(SM_XVIRTUALSCREEN)将返回左边缘,例如。)

从0开始,不是从1开始

最新更新