На этом шаге мы рассмотрим работу с полосами прокрутки.
Для работы с полосами прокрутки окна и полосами прокрутки, принадлежащими элементам управления, используется похожий набор предикатов. Так как нет отдельного идентификатора для полос прокрутки окна, для обращения к полосам прокрутки используется дескриптор окна. Специальный параметр scroll_type используется для определения того, к какой полосе прокрутки идет обращение:
global domains scroll_type=integer constants sb_Horz=0 % Горизонтальная полоса прокрутки окна sb_Vert=1 % Вертикальная полоса прокрутки окна sb_Ctl=2 % Полоса прокрутки как элемент управления в окне
Чтобы работать с реальной позицией движка, сначала нужно установить диапазон полосы прокрутки. Это можно сделать вызовом предиката:
win SetScrollRange(Window,Scroll_type,integer Min,integer Max)
Предикат win_GetScrollRange возвращает диапазон полосы прокрутки.
win GetScrollRange(Window,Scroll_type,integer Min,integer Max)
Если вы явно не установили диапазон, то будет установлен диапазон по умолчанию. Для полос прокрутки окна это значение находится в пределах от 0 до 100. Для полос прокрутки как элементов управления диапазона по умолчанию нет. На 16-разрядной платформе Windows разность между Min и Мах должна быть не больше 32 767.
Реальное положение движка полосы прокрутки должно контролироваться приложением, т. к. оно не изменяется автоматически после действий пользователя. Положение движка должно быть внутри диапазона полосы прокрутки. Приложение устанавливает позицию при помощи предиката:
win_SetScrollPos(Window,Scroll_type,integer Pos)
Текущая позиция может быть прочитана при помощи предиката:
Integer=win_GetScrollPos(Window,Scroll_type)
На некоторых платформах можно устанавливать размер движка в зависимости от размера полосы прокрутки, что позволяет визуально определять общий объем данных. Значение Proportion должно быть между нулем и длиной интервала (Мах - Min) для полосы прокрутки:
win_SetScrollProportion(Window,Scroll_type,unsigned Proportion)
Текущее значение этого соотношения можно получить при помощи предиката:
Unsigned=win_GetScrollProportion(Window,Scroll_type)
На следующем шаге мы рассмотрим "собственное" рисование для элементов управления .