void CDemoView::OnMouseMove(UINT nFlags, CPoint point) 
{
  ............
  CPoint pos;
  pos=this->GetDeviceScrollPosition();
  ................
  sprintf(&s[strlen(s)],"pos.X = %.0f pos.Y = %.0f",pos.x,pos.y);
}
可是打印出来的pos.x和pos.y都显示为0,不知道是为什么?

解决方案 »

  1.   

    GetDeviceScrollPosition Gets the current scroll position in device units. 
    你要把得到的pos与point进行合并的.
    GetDeviceScrollPosition可能不能完成你的要求,看看CScollView其它的函数
      

  2.   

    可是GetDeviceScrollPosition返回的值中x,y的值不对啊!
      

  3.   

    可是GetDeviceScrollPosition返回的值中xy的值不对啊!
      

  4.   

    我也刚发现类似问题,你的错误是sprintf产生的,如果你写出如下格式就不会错误了:sprintf(&s[strlen(s)],"pos.X = %.0f pos.Y = %.0f",(float)pos.x,(float)pos.y);
    你的语句如果在debug版本下运行应该有错误信息,在release版本下就和你的结果一样为0。
      

  5.   

    我加了啊,并且就在debug版本下运行,还是0
      

  6.   

    debug版本下不一定出错,但你的零就是这样导致的,你在printf前加
    if(point.x||point.y)
         AfxMessageBox("here find worng");
    执行一下看是否出口滚动后出现这个消息框。
      

  7.   

    我测试了一下,不进行类型转换在debug版本下可以运行,但是结果就是0。
    GetDeviceScrollPosition()返回的数值也是正确的,如果还错误就检查”&s[strlen(s)]”是否存在问题。建议测试时在GetDeviceScrollPosition()后加入如下语句:
    if(pos.x||pos.y)
      AfxMessageBox("GetDeviceScrollPosition()返回值不等于0");
    如果这个消息框出现,那么0的问题是其他原因了。