SROLLBARINFO.rcScrollbar относится к измерению самой полосы прокрутки или большого пальца прокрутки - PullRequest
0 голосов
/ 29 сентября 2011
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) </strong>

Какая связь между nMax, nPos и ​​прямоугольником прокрутки?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2011

Это координаты (как RECT , так что сверху, слева, справа, снизу) самой полосы прокрутки (см. msdn ).Чтобы получить размеры, вам нужно выполнить вычитание (фрагмент кода на C ++, но вы можете перевести на C #):

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

Вы также должны быть уверены, что работаете в правильной координатесистема (экран или клиент).Я пытался найти, какую систему координат вы получите от GetScrollBarInfo, но еще не нашли ее.Я думаю, что это в клиентских координатах, но я не могу подтвердить это.

0 голосов
/ 29 сентября 2011

Это размеры полосы прокрутки, а не большого пальца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...