我使用了SCROLLINFO 这个结构体,请问如何计算滚动条滑块的长度。就像打开网页时,所看到的那种滚动条的效果。当内容多的时候,滚动条比较短,少的时候滚动条比较长。

解决方案 »

  1.   

    typedef struct tagSCROLLINFO { 
        UINT cbSize; 
        UINT fMask; 
        int  nMin; 
        int  nMax; 
        UINT nPage; 
        int  nPos; 
        int  nTrackPos; 
    }   SCROLLINFO, *LPSCROLLINFO; 
    typedef SCROLLINFO CONST *LPCSCROLLINFOnPage这个参数就是滚动条的长度。
    你调用CScrollBar的GetScrollInfo函数就可以得到一个SCROLLINFO结构体,从这个结构体里读出nPage就是了。
      

  2.   


    SetScrollInfo函数也是一样用,你要根据窗体内容的多少控制滑块的尺寸必须先算出你需要显示的内容长度有多少,算出你滑块需要多长,然后创建一个SCROLLINFO结构体,将滑块长度赋值给它,最后再通过SetScrollInfo函数将SCROLLINFO的信息设置给滚动条。
      

  3.   

    typedef struct tagSCROLLINFO {  
      UINT cbSize;  
      UINT fMask;  
      int nMin;  
      int nMax;  
      UINT nPage;  
      int nPos;  
      int nTrackPos;  
    } SCROLLINFO, *LPSCROLLINFO;  
    typedef SCROLLINFO CONST *LPCSCROLLINFO
    你可以将你总共要显示的行数赋给nMax,nMin赋0; 此时候滚动条的总长度就等于你总共要显示的行数
      

  4.   

    typedef struct tagSCROLLINFO {   
      UINT cbSize;   
      UINT fMask;   
      int nMin;   
      int nMax;   
      UINT nPage;   
      int nPos;   
      int nTrackPos;   
    } SCROLLINFO, *LPSCROLLINFO;   
    typedef SCROLLINFO CONST *LPCSCROLLINFO
    滚动条的长度 = nPage * 滚动区域高度 / ((nMax - nMin)+ nPage);
      

  5.   

    控制滚动条长度的不就是nPage这个参数吗?