SetScrollInfo可以同时实现SetScrollRange和SetScrollPos的功能。而且SetScrollInfo可以使滚动块的大小随内容的多少而改变。 其中SetScrollInfo的参数SCROLLINFO结构体中的fMask可控制有效信息。 typedef struct tagSCROLLINFO { UINT cbSize; //SCROLLINFO结构体本身的字节大小 UINT fMask; //见下面的说明 int nMin; //最小滚动位置 int nMax; //最大滚动位置 UINT nPage; //页面尺寸 int nPos; //滚动块的位置 int nTrackPos; //滚动块当前被拖动的位置,不能在SetScrollInfo中指定 } SCROLLINFO; fMask表示设置或获取哪些数据,如:SIF_ALL所有数据成员都有效、SIF_PAGE(nPage有效)、SIF_POS(nPos有效)、SIF_RANGE(nMin和nMax有效)、SIF_TRACKPOS(nTrackPos有效)。
在使用滚动条功能时,如果要设置它的范围和位置可以用以前的函数,例如:SetScrollRange()、 SetScrollPos()、GetScrollRange()、GetScrollPos()等,但目前通常使用SetScrollInfo()与 GetScrollInfo(),使用这两个函数就要用到SCROLLINFO结构。
可以先定义一个SCROLLINFO结构变量si,用&si作为以上两个函数的参数。同BeginPaint()中的&ps、GetTextMetrics()中的&tm等,这些结构都是通过这些函数被填充各域或取得各域的值。BeginPaint是填充ps的各域的值,GetTextMetrics是