Инициализация полосы просмотра
Сообщения от полосы просмотра
Если полоса просмотра была создана как орган управления, то сообщения WM_HSCROLL и WM_VSCROLL будет получать функция родительского окна.
Если полоса просмотра была определена при создании окна, то сообщения WM_HSCROLL и WM_VSCROLL от нее будут поступать в функцию окна, имеющего полосы просмотра.
Параметр wParam сообщений полосы просмотра содержит код действия, которое совершено пользователем над полосой просмотра. Возможны следующие значения:
Код полосы просмотра | Описание |
SB_LEFT, SB_TOP (используются одинаковые значения констант для разных символических имен) | Сдвиг влево в начало документа (горизонтальная полоса просмотра), сдвиг вверх в начало документа (вертикальная полоса просмотра) |
SB_LINELEFT, SB_LINEUP | Сдвиг влево на одну строку, сдвиг вверх на одну строку |
SB_LINERIGHT, SB_LINEDOWN | Сдвиг вправо на одну строку, сдвиг вниз на одну строку |
SB_PAGELEFT, SB_PAGEUP | Сдвиг на одну страницу влево, сдвиг на одну страницу вверх |
SB_PAGERIGHT, SB_PAGEDOWN | Сдвиг на одну страницу вправо, сдвиг на одну страницу вниз |
SB_RIGHT, SB_BOTTOM | Сдвиг вправо в конец документа, сдвиг вниз в конец документа |
SB_THUMBPOSITION | Сдвиг в абсолютную позицию. Текущая позиция определяется младшим словом параметра lParam |
SB_ENDSCROLL | Сообщение приходит в тот момент, когда вы отпускаете клавишу мыши после работы с полосой просмотра. Это сообщение обычно игнорируется (передается функции DefWindowProc) |
SB_THUMBTRACK | Перемещение ползунка полосы просмотра. Текущая позиция определяется младшим словом параметра lParam |
Так как действия, выполняемые при свертке, одинаковы для полосы просмотра и дублирующих ее клавиш, имеет смысл предусмотреть единый обработчик сообщений от полосы просмотра.
После того как была создана полоса просмотра ее необходимо проинициализировать, указав диапазон изменений значений позиции. Для этого следует вызвать функцию SetScrollRange:
SetScrollRange(HWND hwnd, int fnBar, int nMin, int nMax, BOOL fRedraw);
Параметр fnBar определяет тип полосы просмотра, для которой выполняется установка диапазона изменения значений позиции:
Значение | Описание |
SB_CTL | Установка диапазона для полосы просмотра, созданной как орган управления класса "scrollbar". |
SB_HORZ | Установка диапазона горизонтальной полосы просмотра для окна. |
SB_VERT | Установка диапазона вертикальной полосы просмотра для окна. |
Параметр fRedraw определяет, следует ли перерисовывать полосу просмотра для отражения изменений.