首页 > DUI > DUI-SCroll信息辅助
2014十二月11

DUI-SCroll信息辅助

typedef struct tagSCROLLINFO { 
    UINT cbSize; 
    UINT fMask; 
    int  nMin; 
    int  nMax; 
    UINT nPage; 
    int  nPos; 
    int  nTrackPos; 
}   SCROLLINFO, *LPSCROLLINFO; 
typedef SCROLLINFO CONST *LPCSCROLLINFO;

nMin,nPos一般初始都设置为0.

nPage:可见部分的大小,对于一个有滚动条的窗口,page的大小就是客户区(对于垂直滚动条,就是窗口的高度,对于水平滚动条,就是窗口的宽度).

nMax:全部要显示的区域.

如对于一个显示文章的程序,如果显示一篇文章,需要2000像素的高度,而窗口只有400像素,那么就可以设置nMax=2000,nPage=400。

实际上,我们在滚动条上看到的滑块,就代表者一个页,也就是当前我们看到的窗口。滑块的位置对应的是nPos,大小对应的nPage。

计算公式为:

nPage/(nMax-nMin+1)=滑块长度/滚动条的总长度(就是滑块可滑动的槽)

以我的DUIListBox关联滚动条为例:

XML设定ListBox的客户端显示高为100,则SCROLLINFO::nPage=100

XML设定ListBox的的每行显示高为20,一共插入了10行,则总大小为20*10=200,则SCROLLINFO::nMin=0,SCROLLINFO::nMax=199

初始滚动条在最上端,则nPos=0,如下图红框处

1.png

点击下移一行,则nPos = 20,如下图红框处

2.png

而DUIScroll的m_ptOrigin的y记录了竖直nPos,x记录了水平nPos

文章作者:hgy413
本文地址:http://hgy413.com/1894.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!

本文的评论功能被关闭了.