在屏幕坐标和窗口坐标之见的转换

       在你刚刚创建的OnMouseMove()处理程序中,MFC使用名为CPoint 的MFC 类,将鼠标指针坐标传递到处理函数中。CPoint类型的对象一般被用语描述屏幕上的一个点。访问的CPoint::x 和 CPoint::y 包含该对象所表示的实际点的x和y坐标。

       如果在MM_TEXT映射模式下是象素(最小单位)。

      有时候我希望了解鼠标坐标相对于整个屏幕的值。已经提供了一个名为ClientToSCreen()的比较便捷的转换成员函数。它将CPoint 类或CRect对象做为参数。它将CPoint类和CRect类做为参数,将类中的值从客户窗口值转换为屏幕值;

      例如,窗口可能被放置相对与系统(也就是显示屏幕)左上角的位置为(50,75),而从CPoint 类中传递回来的值是(15,25),也就是从OnMouseMove()这个函数传递回来的值。通过使用ClientToScreen()函数将窗口的偏移量添加到窗口的位置上,这些值被转换为实际的屏幕值了。在这种情况下,屏幕坐标也就变成了(65,100)。

    如果大家想要实践一下的话。一下是一段小小的代码;

    CWnd *pWnd = GetDlgItem(IDC_COORD);
   // Calculate the effective area of the mouse movement
   pWnd->GetClientRect(m_MouseRect);
   pWnd->ClientToScreen(&m_MouseRect);

   另一中选择就是从屏幕坐标转换到客户坐标。可以借助 Windows API函数GetCursorPos()来获取鼠标坐标。然后在调用ScreenToClient()函数来转换。

你可能感兴趣的:(在屏幕坐标和窗口坐标之见的转换)