SCROLLBARINFO.Scrollbar是指滚动条本身的尺寸或滚动滑块

时间:2011-09-29 17:42:24

标签: c# user-interface scrollbar

SCROLLBARINFO Struct
    cbSize DWORD 
    rcScrollBar RECT 
    dxyLineButton DWORD
    xyThumbTop DWORD 
    xyThumbBottom DWORD 
    reserved DWORD 
    rgstate DWORD 6 DUP 
SCROLLBARINFO ends

当GetScrollBarInfo()返回此结构时,rcScrollBar是滚动条或滚动滑块的维度?

更新

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和scrollbar rect之间有什么关系?

提前致谢。

2 个答案:

答案 0 :(得分:0)

这是滚动条的尺寸而不是拇指。

答案 1 :(得分:0)

滚动条本身的坐标(作为RECT,左上,右下)(请参阅msdn)。为了获得你需要执行减法的维度(代码片段在C ++中,但你可以转换为C#):

RECT coords = info.rcScollBar;
LONG width = coords.right - coords.left;
LONG height = coords.bottom - coords.top;

您还需要确保使用正确的坐标系(屏幕或客户端)。我试图找到你从GetScrollBarInfo得到的坐标系,但还没有找到它。我的猜测是在客户坐标系中,但我无法证实这一点。