2011-11-01 58 views
0

在Win32中,GET_X_PARAM和GET_Y_PARAM调用返回的坐标是从0还是从1开始的? 如果我有一个分辨率为640X480的屏幕,那么我会得到什么值?他们是从0到639和0到479?或1至640和1至480?鼠标点击坐标索引从0开始还是从1开始?

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

回答

5

对于WM_MOUSEMOVE,坐标是相对于窗口的客户区,而不是在屏幕上 - 看到MSDN。鉴于此,窗口客户区左上角的点数从0,0开始。

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

3

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