程序载入了一张图片,比窗口大,比如图片是1000*2000,窗口是500*700的话,怎么设置滚动条的范围,让滚动条滚到末端的时候,刚好也是图片的末端?
如果设置垂直滚动条的SCROLLINFO中的nMax为1000的话:
sizeTotal.cy = 1000;
...
SetScrollSizes(MM_TEXT, sizeTotal);
这样程序运行时滚动条滚动到末端,设断点知道nPos=1000,但这时候滚动的位置实际上比图片大
请问这是为什么呢,nMax应该设置为多少呢

解决方案 »

  1.   

    SCROLLINFO si; memset( &si, 0, sizeof( SCROLLINFO ) );
    si.cbSize = sizeof( SCROLLINFO );
    si.fMask = SIF_DISABLENOSCROLL | SIF_PAGE | SIF_POS | SIF_RANGE;
    si.nMin = 0;
    si.nMax = Width - 1;
    si.nPage = 1
    si.nPos = xx;
    试试这个吧,不知道你那个是怎么算的,我这边也用,就这么操作一下就行了。
      

  2.   


    si.nMax = Width - 1;
    width代表什么
      

  3.   

    试了试这样不行,si.nMax 单位是像素吗
      

  4.   

    width就是你图片的宽度 - 1
      

  5.   

    为什么不直接用CScrollView类,在初始化或载入新图片时:
    SetScrollSizes(MM_TEXT, CSize(1000,2000));
      

  6.   

    看看是不是OnHScroll写的有问题