在带有垂直滚动条的SDI程序中,当滚动条向下滚动后,请问如何获取当前鼠标相对于文档最上方(已经被滚到屏幕上方外面了)的坐标?因为我现在使用响应鼠标单击事件,当左键按下后,判断当前的鼠标位置,要在该位置坐标画图了(我的画图坐标是相文档最上方的),但当文档向下滚动后,坐标就不准了,请问有直接获取当前鼠标相对于文档最上方的坐标的方法吗? 
   我的加滚动条在onInitUpdate()函数添加的
CSize   sizeTotal(20000,   30000);   //   20   by   30   cm   
SetScrollSizes(MM_TEXT,   sizeTotal);

解决方案 »

  1.   

    你在WM_LBUTTONDOWN消息中获取的是客户区坐标,用DPToLP转换为逻辑坐标即可(CScrollView吧)。
      

  2.   

    这就需要你得到滚动条的位置后再和当前坐标做一下运行那可,比如你现在在是OnMouseMove(UINT nFlags, CPoint point)消息中处理
    GetScrollPos(SB_VERT);这个函数可以得到滚动条垂直方向上的位移,这样其相对窗口最上边的坐标是:
    point.y = point.y - GetScrollPos(SB_VERT);
      

  3.   

    谢谢!!问题早已解决,就是直接用DPtoLP()即可,