在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开始