SCROLLBARINFO Struct
cbSize DWORD
rcScrollBar RECT
dxyLineButton DWORD
xyThumbTop DWORD
xyThumbBottom DWORD
reserved DWORD
rgstate DWORD 6 DUP
SCROLLBARINFO ends
当GetScrollBarInfo()返回该结构,rcScrollBar是滚动条或滚动滑块的尺寸?SROLLBARINFO.rcScrollbar被称为滚动条本身或滚动滑块的dimesion
更新:
从GetScrollInfo另一结构:
typedef struct tagSCROLLINFO {
UINT cbSize;
UINT fMask;
int nMin;
int nMax;
UINT nPage;
int nPos;
int nTrackPos;
} SCROLLINFO, **LPCSCROLLINFO;
为了检测是否在底部,为什么这个公式工作滚动滑块:
IsAtBottom =(si.nMax - si.nPos)<(sbi.rcScrollBar.bottom - sbi.rcScrollBar.top)
nMax,nPos和滚动条矩形之间的关系是什么?
在此先感谢。
好的,谢谢!我不明白的是:为什么 此代码: IsAtBottom =(scrlINF.nMax - scrlINF.nPos)<(scrlBarINF.rcScrollBar.Bottom - scrlBarINF.rcScrollBar.Top) 凡ScrlINF是SCROLLINFO,ScrlBarINF是ScrollBarInfo 据我所知,在ScrlBarINF.rcScrollBar将永远是相同的,但n最大和非营利组织将随时改变。 –
我相信nMax不应该改变(除非数据被添加到可滚动控件),但nPos会。 nPos指示滚动框的位置。你不需要检查滚动条的大小。如果nPos在nMax,那么你应该在底部。如果nPos在nMin你应该在最上面。如果你用C#工作,我认为你不需要P/Invoke windows API调用。控件上应该有滚动条的属性。 – pstrjds
pstrjds:事实上,即使滚动拇指在底部,nPos也不等于nMax。但有了上面的公式,它的工作原理。但我不知道为什么。 –