Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций Часть II.doc
Скачиваний:
14
Добавлен:
20.11.2018
Размер:
1.48 Mб
Скачать

П 2.3. Полоса прокрутки

2.3.1. Общие сведения

Полосы прокрутки широко используют для просмотра содержимого документа, которое не помещается в окне. Такие полосы бывают только горизонтальные или вертикальные. Они располагаются соответственно в нижней и правой части окна. Понятие полоса прокрутки не ограни­чивается полосой просмотра. Оно в общем случае представляет собой

множество окон класса scrollbar различного назначения. Наи­более сложную разновидность окон класса "scrollbar" представляют по­лосы просмотра.

Представим, что в окне отображен некий документ.

Если установить курсор мыши на верхнюю "кнопку с треугольником" полосы просмотра и нажать левую клавишу мыши, документ в окне сдвигается вниз на одну "строку". Если же аналогичным образом нажать на нижнюю "кнопку с треугольником", документ сдвигается на одну "строку" вверх. Ползунок при этом скачком сдвигается соответственно на одну "позицию" вверх или вниз.

Если установить курсор мыши в область полосы просмотра между ползунком и верхней кнопкой и нажать на левую клавишу мыши, доку­мент сдвигается вниз на одну "страницу". Если щелкнуть левой клави­шей мыши в области между ползунком и нижней кнопкой, документ сдвинется на одну "страницу" вверх. Ползунок при этом скачком сдвига­ется соответственно на одну "страницу" вверх или вниз.

Ползунок можно плавно перемещать мышью вдоль полосы просмот­ра. В процессе перемещения содержимое окна перемещается или ото­бражается в позиции ползунка.

Таким образом, в зависимости от вида воздействия мыши полоса про­смотра может посылать 7 различных сообщений родительскому окну.

Горизонтальная полоса просмотра состоит из тех же объектов, что и вертикальная. Она обеспечивает свертку документа в горизонтальном направлении.

Существуют и менее привычные виды полос прокрутки. Например, это полоса прокрутки стиля SBS_SIZEBOX. Пример такой полосы будет рассмотрен ниже.

2.3.2. Создание полосы прокрутки

Существует 3 способа создания полосы прокрутки

1. Полосу прокрутки можно создать с помощью вызова функции CreateWindow. Этот способ аналогичен способу, используемому при создании кнопок или статических органов управления. Первым аргумен­том вызова функции CreateWindow указывают "scrollbar", а вторым -NULL (заголовок окна не используется). Дескриптор полосы прокрут­ки используют функции управления полосами прокрутки. Количе­ство и разновидность полос, создаваемых таким способом, ничем не ог­раничено.

2. При создании любого окна с помощью функции CreateWindow можно указать, что окно имеет горизонтальную, вертикальную или обе полосы просмотра. Для того чтобы у окна появились вертикальная и/или горизонтальная полосы просмотра, при создании окна в третьем пара­метре функции CreateWindow указывают стиль WS_VSCROLL и/или WS_HSCROLL. Например:

hwnd = CreateWindow(szClassName, szWindowTitle,

W_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0,0, hinstance, NULL);

3. Некоторые органы управления также могут иметь полосы просмотра.

Внимание! Во втором и третьем способах дескрипторы для полос просмотра не создаются.