2011-11-01 56 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

值是從零開始的,而不是一個基於