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,如下图红框处
点击下移一行,则nPos = 20,如下图红框处
而DUIScroll的m_ptOrigin的y记录了竖直nPos,x记录了水平nPos
文章作者:hgy413
本文地址:https://hgy413.com/1894.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!