视图用
CScrollView
打开一图象后,在上面选取一点.如果不拖动滑动条时选取的正确.
拖动滑动条后用鼠标选取的点的坐标默认是以客户区(0,0)为原点的,不是以图象的原点坐标为原点的,所以在计算时出现错误信息.
请问应如何消除?计算是在view类中计算的,
坐标转换应该在哪里进行?
还有拖动滑动条的多少是如何计算的???谢谢!!

解决方案 »

  1.   

    GetScrollPosition()取得滚动条的偏移坐标,加上当前鼠标的坐标就可以了
      

  2.   

    又见坐标问题..
    ------
    DPtoLP()转换下就行了..
      

  3.   

    看看View中的OnInitialUpdate中的代码,主要是坐标变换问题(CScrollView)。
      

  4.   

    GetScrollPosition()取得滚动条的偏移坐标,加上当前鼠标的坐标就可以了
    不需要添加OnVScroll()函数了吗?
    在OnLButtonUp函数中用GetScrollPosition()转换坐标了加上原来的位置了,结果还是不对
      

  5.   

    我现在是这样用的
    打开一副图象,需要选取一矩形区域,
    但是由于图象很大,在选取前必须滑动滑动条,使要选择的区域出现在客户区中
    选取的不是点,是一个矩形现在OnLButtonDown()函数中找到开始点m_p1
    在OnMouseMove()中移动鼠标到最后的点
    在OnLButtonUp()中找到终点m_p2
    但是经过滑动条滑动后,两个点默认的原点是客户区的左上点,不是图象的左上点VIEW 类是基于CScrollView

      

  6.   

    明白了,
    是这样解决的
    在VIEW类中增加一个点成员变量PScroll,用来接受滑动条的变化,
    在OnLButtonDown()函数中找到开始点m_p1,并增加PScroll = GetScrollPosition();
    在OnMouseMove()中移动鼠标到最后的点
    在OnLButtonUp()中找到终点m_p2,同时增加PScroll = GetScrollPosition();
    保持原来的,在用到这两个点的函数中增加
    m_p1+=PScroll;
    m_p2+=PScroll;这样结果就对了,
    不知道大家认为这样做对吗?