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。但有了上面的公式,它的工作原理。但我不知道爲什麼。 –