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

       在你刚刚创建的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()函数来转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值