视图缩放如何与滚动条匹配?
SetScrollRange(SBS_VERT,0,nScrollRange,TRUE);//nScrollRange如何设置?它的值是怎么算的?
以下这几个值如何设置?或如何确定?或如何计算?
                  SCROLLINFO sif;
sif.nMax = ?;
sif.nMin = ?;                                
sif.nPos = ?; 
sif.nTrackPos = ?;
sif.fMask = SIF_ALL;
sif.nPage = ?;

解决方案 »

  1.   

    我没有用SetScrollRange
    主要用的是GetScrollPos和SetScrollPos这两个
      

  2.   

     nMin <= scrollbar的pos <=nMax,也许没等于号,记不清了The nPage member must specify a value from 0 to nMax - nMin +1. The nPos member must specify a value between nMin and nMax - max( nPage– 1, 0). 
      

  3.   

    1. 视图需要从 CScrollView 派生,方便以下的处理
    2. 如果图片 的大小超过了客户区的大小,则获取图片的大小 后,调用view的方法设置滚动的范围:SIZE se;
    se.cx = picture_width;
    se.cy = picture_height;
    SetScrollSizes( MM_TEXT, se );3. 获取当前的滚动位置:
    CPoint pt = GetScrollPosition();
    此时,pt的x、y分别是当前滚动条滚动到的位置。如果是没有滚动条出现,则它们分别为0在你画图时,其坐标分别减去pt,即画图的起始位置是:
    (-pt.x,-pt.y)这样你的图像就可以正常显示了
    如果你的图片括大一倍,则picture_width和picture_height当然也要括大一倍,如果是缩小一倍,这两个值也当然要缩小一倍