Функция SetScrollRange

Я читал о SetScrollRange, но до сих пор не понял, какой диапазон (минимум, максимум) находится в полосе прокрутки. Я установил диапазон вертикальной полосы прокрутки богатого элемента управления редактирования на (0, 100)

SetScrollRange(hwndRichEditControl, SB_VERT, 0, 100, TRUE);

Теперь, если я попытаюсь GetScrollPos получить позицию, я получаю значение выше максимального диапазона. Разве позиция не должна быть между 0 и 100?

int Pos = GetScrollPos(hwndRichEditControl, SB_VERT);

person Jack    schedule 15.01.2011    source источник


Ответы (1)


Это не должно. Сам элемент управления RichEdit определяет диапазон прокрутки полосы прокрутки. Что он делает в зависимости от того, сколько текста он отображает. Переопределение это не будет длиться долго, если вообще. Вы можете использовать GetScrollInfo() только для того, чтобы узнать, что он использует в данный момент. Это изменится, как только пользователь добавит текст.

person Hans Passant    schedule 15.01.2011
comment
Но как я могу узнать, находится ли прокрутка в середине или внизу? - person Jack; 15.01.2011
comment
Это не полное предложение, я должен предположить, что вы действительно говорите об информации, которую вы получаете из GetScrollInfo(). Вы получаете SCROLLINFO с nMin, nMax и nPos. Значение nPos говорит вам, где оно прокручивается относительно nMin и nMax. - person Hans Passant; 15.01.2011
comment
На самом деле проблема в том, что я не получаю значения nPos относительно nMin и nMax. он превышает nMax. - person Jack; 15.01.2011
comment
Ползунок вертикальной полосы прокрутки имеет два края, верхний и нижний. SCROLLINFO.nPage сообщает вам, насколько велик большой палец. - person Hans Passant; 15.01.2011
comment
Спасибо, может быть, вы имеете в виду, что мне нужно рассчитать это самому. - person Jack; 15.01.2011