Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 47


Теперь необходимо определить диапазон прокрутки, который опреде­ляет число шагов между крайними позициями бегунка (слайдера). По умолчанию для полос прокрутки, являющихся частью окна, этот диапа­зон определен от 0 до 100. Для того чтобы изменить диапазон прокрутки, необходимо вызвать функцию SetScrollRange(), которая в файле winuser.h определена следующим образом:

WINUSERAPI BOOL WINAPI SetScrollRange(HWND hWnd, int nBar,

int nMinPos, int nMaxPos, BOOL bRedniw);

Первый аргумент функции - хэндл окна, которому принадлежат поло­сы прокрутки. Второй аргумент определяет, для какой полосы прокрутки (вертикальной или горизонтальной) устанавливается диапазон. В данном случае этот аргумент может принимать значение SB_VERT или SB_HORZ, что определяет работу с вертикальной или горизонтальной полосой прокрутки. Третий и четвертый аргументы непосредственно указывают нижнюю и верхнюю границу диапазона прокрутки. Пятый аргумент представляет собой флаг, определяющий, нужно ли перерисо­вывать полосу прокрутки после определения диапазона. TRUE - полоса прокрутки перерисовывается, FALSE - перерисовка не нужна. Заметьте, что если диапазон прокрутки определен от 0 до 0, то полоса прокрутки становится невидимой. Это свойство используется и в приведенной выше программе. В том случае, когда размеры окна превышают размеры ото­бражаемого bitmap'a, у полос прокрутки устанавливается диапазон от О до 0, следовательно, полоса прокрутки скрывается.

54

В данном случае с помощью функции SetScrollRangeQ диапазон про­крутки определен как разность между размером bitmap'a и размером окна по вертикали и по горизонтали, т. с. шаг полосы прокрутки соответствует одному пикселю.

Воздействовать на полосы прокрутки можно по-разному: во-первых, можно щелкнуть клавишей мыши на стрелах, расположенных по краям полосы; во-вторых, можно щелкнуть на полосе выше или ниже слайдера. Наконец, можно перетащить слайдер на другое место. Все эти воздейст­вия приводят к тому, что оконная функция окна, которому принадлежат полосы прокрутки, получает сообщение WM VSCROLL (если действия производились вертикальной полосой) или WM_HSCROLL (реакция на воздействие на горизонтальную полосу).




Начало  Назад  Вперед



Книжный магазин