Что такое полоса прокрутки
Полоса прокрутки
Полосу прокрутки следует отличать от слайдера, который является еще одним визуально похожим, но функционально другим объектом. Ползунок используется для изменения значений, но не меняет отображение и не перемещает отображаемую область, как это делает полоса прокрутки.
В 1974 году перемещение курсора к левому краю при использовании Bravo изменило его форму на двунаправленную стрелку, чтобы обеспечить возможность прокрутки. Нажатие левой или верхней красной кнопки прокручивает содержимое вверх, а строка рядом с курсором перемещается в верхнюю часть окна. Нажатие правой или нижней синей кнопки прокручивает содержимое вниз, а строка в верхней части окна спускается до курсора. Удерживание средней желтой кнопки изменяет курсор на большой палец, позволяя перейти к этому проценту документа с индикатором текущего размещения. [4]
В 1977 году Smalltalk включил стабильную полосу прокрутки в левой части окна фокуса. Щелчок правой половины полосы прокрутки перемещает содержимое вверх, а левая половина перемещает содержимое вниз. Большой палец в центре панели можно было плавно перетаскивать и отображать процент видимого содержимого; первая пропорциональная полоса прокрутки. [5]
В 1980 году в Interlisp была полоса прокрутки, которая появлялась в левой части окна при перемещении курсора влево. Заштрихованный большой палец панели показывает процент видимого содержимого и управляется средней кнопкой. Левая кнопка прокручивается вверх, чтобы переместить выбранное положение к верхнему краю окна, а правая кнопка прокручивается вниз, чтобы переместить верхний край окна в выбранное положение. [6]
В 1983 году у Apple Lisa были стрелки, указывающие вверх и вниз, кнопки страниц и большой палец фиксированного размера.
В 1984 году у Macintosh был светло-серый прямоугольник с ползунком «ползунок», дорожкой «серая область» и стрелками, указывающими в противоположных направлениях к контенту, который будет отображаться при нажатии соответствующей стрелки. Стрелки будут прокручивать отдельный блок при одном щелчке или автоматически повторять при непрерывном нажатии. Кнопки страниц были удалены, и вместо этого можно было щелкнуть по направляющей лифта, чтобы перейти к следующему разделу. При нажатии на большой палец, перетаскивание приведет его к этой конкретной точке, если перед отпусканием не было сделано движение далеко за пределы полосы прокрутки, прерывая действие. Пустая полоса прокрутки отображалась, когда окно не было в фокусе или если весь документ был виден в окне. [8]
Также в 1985 году Viewpoint использовала правую кнопку для перемещения контента по процентам или по окну, а не по страницам.
В 1988 году компания Open Look создала большой палец лифта с клавишами со стрелками прямо на нем. Щелчок по дорожке, перемещаемой по страницам, и автоповтор сдвигает указатель. Кабельные анкеры размещались в начале и в конце документа, а центр лифта можно было перетащить. [9]
В 1989 году NeXT переместил полосу прокрутки обратно в левую часть окна. [10] Большой палец был пропорционального размера со стрелками вместе внизу панели. Действия повторяются автоматически, а нажатие клавиши alt перемещает содержимое по окну. Большой палец можно было перетащить, а использование клавиши alt во время перетаскивания замедляло его движение.
В 1997 году PalmPilot включал обычную полосу прокрутки, где текст выходил за границы экрана с использованием перетаскиваемого большого пальца и стрелок, которые можно было нажимать стилусом. Он также имел две физические кнопки для прокрутки вверх и вниз соответственно. [11]
В 2001 году Mac OS X 10.0 использовала пропорциональный большой палец и перемещала обе кнопки со стрелками в нижнюю часть панели.
В 2007 году iPhone и iOS включали обычную полосу прокрутки в веб-браузере и других приложениях, хотя она была предназначена только для вывода и с ней нельзя было взаимодействовать. В контактах была предусмотрена полоса прокрутки букв для перехода по содержимому. [12]
В 2011 году Mac OS X 10.7 убрала кнопки с конца панели и была разработана так, чтобы больше походить на полосу прокрутки iOS. В том же выпуске Mac OS X 10.7 Apple представила «естественную прокрутку», что означает, что экран перемещается в том же направлении, что и пальцы пользователя, когда они используют жест прокрутки двумя пальцами. Если пальцы пользователя перемещаются вверх по трекпаду, контент на странице поднимается вверх, позволяя пользователю читать контент дальше по странице, и наоборот. [13]
В версии Microsoft Word для Mac 2015 года были введены исчезающие полосы прокрутки. Размещение в документе больше не было видно, когда указатель мыши находился за пределами области панели, даже если рассматриваемое окно было в фокусе. Целью этого изменения было соответствие стандартным методам проектирования Mac по скрытию полосы прокрутки, когда она не нужна немедленно для целей иерархии информации. [14]
Перетаскивание большого пальца
Перетаскивание большого пальца исторически является традиционным способом управления полосой прокрутки. Переместив курсор на большой палец на экране, а затем нажав и удерживая, большой палец можно перетащить. Это часто делается с помощью трекпада или левой кнопки мыши на обычной мыши или сенсорной панели. Перемещение курсора при нажатии вниз перемещает ползунок полосы прокрутки для просмотра различных разделов страницы. [15] В приложениях, встроенных в OS X 10.11 (и некоторых предыдущих версиях OS X), полосы прокрутки не отображаются в пользовательском интерфейсе до тех пор, пока пользователь не воспользуется другим методом прокрутки, например прокруткой двумя пальцами или клавишами со стрелками. Следовательно, пользователь должен сначала выполнить прокрутку с помощью одного из этих методов, а затем переместить курсор на ползунок, где бы он ни появлялся.
В Microsoft Windows перемещение мыши слишком далеко от большого пальца при перетаскивании приведет к сбросу положения прокрутки на предыдущее.
Колесо прокрутки
Также можно использовать колесо прокрутки на обычной мыши. При перемещении колеса в желаемом направлении содержимое перемещается в том же направлении. [16] Большинство мышей оснащены колесами прокрутки, которые прокручивают только вверх и вниз, но некоторые мыши содержат колеса прокрутки, которые позволяют пользователю прокручивать в любом направлении (вверх, вниз, влево или вправо), включая диагональные направления. При прокрутке вверх и вниз направление прокрутки страницы в зависимости от направления, в котором пользователь прокручивает колесо прокрутки, может отличаться в зависимости от настроек прокрутки компьютера.
Клавиши со стрелками
Кнопки со стрелками на клавиатуре можно нажимать для прокрутки страницы вверх, вниз, влево или вправо. Этот метод прокрутки обычно приводит к очень медленной прокрутке экрана по сравнению с другими методами прокрутки. Нажатие кнопок со стрелками приведет к продолжению прокрутки страницы до тех пор, пока не будет достигнут один из пределов прокрутки.
Щелчок по желобу
По желобу над или под ползунком можно щелкнуть, чтобы сразу перейти к этой точке на странице, или постранично для многостраничного контента. [15] После щелчка по желобу прокрутка начинается автоматически, а затем останавливается, как только большой палец достигает положения указателя мыши. Этот метод прокрутки быстрее, чем другие, и его лучше всего использовать, когда пользователю нужно прокрутить сразу много контента или когда пользователь знает, где именно на странице ему нужно прокрутить.
Экранные кнопки со стрелками
В BeOS экранные кнопки прокрутки для обоих направлений появляются на обоих концах полосы прокрутки. В некоторых программах Microsoft Office дополнительные кнопки ⏪ и ⏩ могут использоваться для постраничной навигации. [18]
Различные кнопки мыши
Тачпад Windows
Кроме того, на некоторых компьютерах под управлением Windows есть механизм прокрутки сбоку сенсорной панели, как показано на рисунке. Чтобы использовать этот механизм, палец помещается в область прокрутки и перемещается вверх и вниз или влево и вправо для прокрутки страницы. Опять же, в зависимости от настроек прокрутки компьютера, перемещение пальца в определенных направлениях вдоль этих областей прокрутки может привести к различным соответствующим направлениям прокрутки. [19]
Трекпад Mac
Было предложено или реализовано множество вариантов традиционного дизайна и использования полосы прокрутки. Чтобы избежать ограничения видимости окна полосами прокрутки при сохранении функциональности, было предложено использование программного троса (тонкая линия), связанного с перемещением указателя мыши по тросу. Точно так же полосу прокрутки можно размещать непосредственно внутри содержимого, где это полезно, как для уменьшения используемого пространства, так и для уменьшения необходимых перемещений указателя. [20]
Включение визуальных и операционных подсказок в область отображения полосы прокрутки может указать, какие направления позволяют прокручивать движение, а также какие взаимодействия с полосой прокрутки доступны. [20] Это может быть пустое поле, сигнализирующее об окончании списка, отключении кнопок прокрутки и изменении цвета полосы прокрутки.
Некоторые полосы прокрутки включают в себя визуальный индикатор положения, который помогает определить, где действие прокрутки прошло или будет перемещаться в содержимом. [21] Для многостраничного контента индикатор текущего номера страницы по сравнению с общим номером страницы может быть включен рядом с ползунком при прокрутке, а более широкие полосы прокрутки могут включать обзор всей страницы. В полосах прокрутки, подобных тем, которые используются в телефонных списках контактов, состоящих из букв алфавита, буква, соответствующая текущей области, может быть увеличена или выделена каким-либо образом. Хотя они стабильны и предоставляются приложением, некоторые приложения и поисковые системы позволяют использовать маркеры релевантности, предоставленные или добавленные пользователем. Они могут быть строго визуальными или могут автоматически останавливать действие на полосе прокрутки при достижении каждого маркера. [20] Их можно выделить цветом или даже звуком, чтобы дополнительно помочь пользователю найти то, что ему нужно в контенте.
В ОС RISC перетаскивание полосы прокрутки левой кнопкой мыши работает обычным образом, но перетаскивание правой кнопкой приводит к исчезновению указателя и одновременному манипулированию обеими полосами прокрутки. Многие операции с графическим интерфейсом пользователя в ОС RISC при щелчке правой кнопкой мыши выполняют связанные, но немного отличающиеся функции.
WebKit также предоставляет множество псевдоклассов для изменения стиля полос прокрутки. [25]
Полосы прокрутки также были улучшены для кодирования информации о записях списка. [26] Например, в Google Chrome на вертикальной полосе прокрутки появляются метки впадины, чтобы указать места в документе, где был найден конкретный поисковый запрос.
Компьютерные грамотные пользователи часто знакомы с полосами прокрутки, но люди с ограниченными знаниями могут не понимать их интуитивно, особенно с учетом более поздних вариантов, без посторонней помощи. [27] Независимо от уровня грамотности, можно найти множество проблем с различными типами полос прокрутки и их взаимодействием. С точки зрения дизайна, если размер окна уже мал, видимая область содержимого будет еще больше уменьшена за счет наличия полосы прокрутки. [20] В то время как некоторые недавно исчезнувшие полосы прокрутки помогают смягчить эту проблему, более традиционные не позволяют избежать ее, особенно когда присутствуют как горизонтальные, так и вертикальные полосы.
С точки зрения использования, многие общие проблемы связаны с точностью. Сопоставление полосы прокрутки и отображения является линейным, поэтому точность использования зависит от размера содержимого. [28] Навигация по меньшему документу становится проще, чем по большему документу. Это также означает, что все части документа подчеркнуты одинаково, и важность каждой части не распознается с помощью полосы прокрутки.
Не часто указывается, где в содержимом была достигнута прокрутка, если только действие прокрутки не остановлено для просмотра содержимого. Это усложняет задачу независимо от того, знает ли пользователь, что он ищет, или общую организацию контента. Те, у которых есть индикатор, ограничены предопределенными настройками видимости, количества и стиля. [21] При попытке прокрутки при выполнении такого действия, как выделение, величина прокрутки может не соответствовать желаемой величине, выходить за рамки или предлагать пользователю изменить положение несколько раз. [29] Перебег также может произойти при попытке разместить рядом с верхним или нижним краем отдельной страницы в большом наборе. Попытка регулировки небольшой прокрутки пользователем может привести к увеличению прокрутки, поскольку прокрутка активирует автоматическое действие, переходящее на следующую страницу. [15]
В отчете Уильяма Бакстона и Брэда Майерса за 1986 год были протестированы различные способы взаимодействия двумя руками, включая прокрутку, щелчок и изменение размера. В их исследовании щелчок и изменение размера выполнялись параллельно. В первом эксперименте участникам предлагалось выполнить задачу выбора / позиционирования, а во втором эксперименте участникам предлагалось выполнить сложную задачу навигации / выбора. Исследование показало, что пользователи могут выполнять эти задачи быстрее и параллельно, когда они используют обе руки, но не обязательно, когда они используют обе руки одновременно. Они также обнаружили, что чем более взаимосвязанными были задачи, которые пользователь выполнял каждой рукой, тем быстрее они выполняли задачи, которые их просили выполнить. [30]
О панелях прокрутки
В окне может отображаться объект данных, например документ или точечный рисунок, который больше, чем клиентская область окна. При использовании с полосой прокрутки пользователь может прокручивать объект данных в клиентской области, чтобы отобразить части объекта, выходящие за рамки окна.
Полосы прокрутки должны включаться в любое окно, для которого содержимое клиентской области выходит за границы окна. Ориентация полосы прокрутки определяет направление прокрутки, когда пользователь работает с полосой прокрутки. Горизонтальная полоса прокрутки позволяет пользователю прокручивать содержимое окна влево или вправо. Вертикальная полоса прокрутки позволяет пользователю прокручивать содержимое вверх или вниз.
В этом разделе рассматриваются следующие темы.
Части полосы прокрутки
Полоса прокрутки состоит из затененной Шафт с кнопкой со стрелкой на каждой стороне и полем прокрутки (иногда называемым бегунком) между кнопками со стрелками. Полоса прокрутки представляет общую длину или ширину объекта данных в клиентской области окна; поле прокрутки представляет часть объекта, видимого в клиентской области. Расположение поля прокрутки изменяется каждый раз, когда пользователь прокручивает объект данных для отображения другой части. Система также корректирует размер ползунка полосы прокрутки таким образом, чтобы он обозначает, какая часть всего объекта данных в данный момент видна в окне. Если большая часть объекта видна, то поле прокрутки занимает большую часть полосы прокрутки Шафт. Аналогично, если видима только небольшая часть объекта, то поле прокрутки занимает небольшую часть полосы прокрутки Шафт.
Пользователь прокручивает содержимое окна, щелкая одну из кнопок со стрелками, щелкая область на затененной полосе прокрутки Шафт или перетаскивая ползунок. Когда пользователь нажимает кнопку со стрелкой, приложение прокручивает содержимое на одну единицу (обычно это одна строка или столбец). Когда пользователь щелкает затененные области, приложение прокручивает содержимое по одному окну. Величина прокрутки, которая возникает при перетаскивании ползунка полосы прокрутки, зависит от расстояния, на которое пользователь перетаскивает ползунок и в диапазоне прокрутки полосы прокрутки. Дополнительные сведения о диапазоне прокрутки см. в разделе Расположение бегунка и диапазон прокрутки.
на следующем снимке экрана показан форматированный элемент управления «поле ввода» с вертикальной и горизонтальной полосами прокрутки, так как они могут отображаться в Windows Vista. Вертикальная полоса прокрутки в данный момент является «активной», так как указатель мыши наводится на него при попытке выполнить снимок экрана.
Стандартные полосы прокрутки и элементы управления полосы прокрутки
Полоса прокрутки включается в окно либо как стандартная полоса прокрутки, либо как элемент управления «полоса прокрутки». Стандартная полоса прокрутки находится в неклиентской области окна. Он создается с окном и отображается при отображении окна. Единственной целью стандартной полосы прокрутки является предоставление пользователю возможности создавать запросы прокрутки для просмотра всего содержимого клиентской области. Можно включить стандартную полосу прокрутки в окно, указав WS _ HSCROLL, WS _ VSCROLLили оба стиля при создании окна. Стиль WS _ HSCROLL создает горизонтальную полосу прокрутки, расположенную в нижней части клиентской области. Стиль WS _ VSCROLL создает вертикальную полосу прокрутки, расположенную справа от клиентской области. _Значения метрик системы SM кксхскролл и SM _ цихскролл определяют ширину и высоту стандартной горизонтальной полосы прокрутки. Значения SM _ кксвскролл и SM _ цивскролл определяют ширину и высоту стандартной вертикальной полосы прокрутки. Стандартная полоса прокрутки является частью связанного окна и поэтому не имеет собственного обработчика окна.
Элемент управления «полоса прокрутки» — это окно управления, которое принадлежит классу окна SCROLLBAR. Появляется элемент управления «полоса прокрутки», который работает как стандартная полоса прокрутки, но является отдельным окном. В отдельном окне элемент управления «полоса прокрутки» принимает прямой фокус ввода. В отличие от стандартной полосы прокрутки, элемент управления «полоса прокрутки» также имеет встроенный интерфейс клавиатуры.
В одном окне можно использовать столько элементов управления полосой прокрутки, сколько необходимо. При создании элемента управления «полоса прокрутки» необходимо указать размер и расположение полосы прокрутки. Однако если размер окна элемента управления «полоса прокрутки» можно изменить, то при изменении размера окна размер полосы прокрутки должен быть изменен.
Преимуществом использования стандартной полосы прокрутки является то, что система создает полосу прокрутки и автоматически задает ее размер и расположение. Однако стандартные полосы прокрутки иногда являются слишком узкими. Например, предположим, что необходимо разделить клиентскую область на квадранты и использовать отдельный набор полос прокрутки для управления содержимым каждого квадранта. Нельзя использовать стандартные полосы прокрутки, так как для конкретного окна можно создать только один набор полос прокрутки. Вместо этого используйте элементы управления «полоса прокрутки», так как в окно можно добавить любое количество элементов.
Приложения могут предоставлять элементы управления «полоса прокрутки» для целей, отличных от прокрутки содержимого окна. Например, приложение-заставка может предоставить полосу прокрутки для настройки скорости перемещения графики на экране.
Элемент управления «полоса прокрутки» может иметь ряд стилей, которые служат для управления ориентацией и положением полосы прокрутки. Нужные стили задаются при вызове функции CreateWindowEx для создания элемента управления «полоса прокрутки». Некоторые стили создают элемент управления «полоса прокрутки», который использует ширину или высоту по умолчанию. Однако необходимо всегда указывать координаты x и y, а также другие измерения полосы прокрутки.
Таблицу стилей элемента управления «полоса прокрутки» см. в разделе стили элементов управления полосы прокрутки.
Чтобы использовать визуальные стили с полосами прокрутки, приложение должно включать манифест и вызывать иниткоммонконтролс в начале программы. Сведения о визуальных стилях см. в разделе стили визуальныхэлементов. Дополнительные сведения о манифестах см. в разделе Включение визуальных стилей.
Расположение поля прокрутки и диапазон прокрутки
Приложение обычно корректирует диапазон прокрутки до удобных целых чисел, что упрощает перевод ползунка в значение, соответствующее объекту данных для прокрутки. Например, если приложение должно отображать 260 строк текстового файла в окне, в котором может отображаться только 16 строк, то диапазон вертикальной полосы прокрутки может быть установлен в 1 – 244. Если ползунок находится в позиции 1, первая строка будет находиться в верхней части окна. Если ползунок находится в позиции 244, последняя строка (строка 260) будет находиться в нижней части окна. Если приложение пытается указать значение, которое меньше минимального или максимального значения, вместо него используется минимальное или максимальное значение диапазона прокрутки.
Чтобы установить полезную связь между диапазоном полосы прокрутки и объектом данных, приложение должно скорректировать диапазон при изменении размера объекта данных.
По мере того, как пользователь перемещает бегунок в полосе прокрутки, полоса прокрутки сообщает о положении ползунка в виде целого числа в диапазоне прокрутки. Если значение позиции является минимальным, то поле прокрутки находится в верхней части вертикальной полосы прокрутки или в левом конце горизонтальной полосы прокрутки. Если значение позиции равно максимальному значению, поле прокрутки находится в нижней части вертикальной полосы прокрутки или в правом конце горизонтальной полосы прокрутки.
Максимальное значение, которое может быть выдается полосой прокрутки (то есть максимальной позицией прокрутки), зависит от размера страницы. Если размер страницы в полосе прокрутки больше единицы, то максимальная длина прокрутки меньше максимального значения диапазона. Для вычисления максимальной прокрутки можно использовать следующую формулу:
Видимость полосы прокрутки
Система скрывает и отключает стандартную полосу прокрутки при указании равного минимального и максимального значения. Система также скрывает и отключает стандартную полосу прокрутки, если задан размер страницы, включающий весь диапазон прокрутки полосы прокрутки. Это способ временного скрытия полосы прокрутки, если она не требуется для содержимого клиентской области. Нет необходимости выполнять прокрутку запросов с помощью полосы прокрутки, если она скрыта. Система включает полосу прокрутки и показывает ее снова при установке минимальных и максимальных значений в неравные значениях, а также если размер страницы не включает весь диапазон прокрутки. Функцию шовскроллбар можно также использовать для скрытия или отображения полосы прокрутки. Он не влияет на диапазон полосы прокрутки, размер страницы или расположение поля полосы прокрутки.
Функцию енаблескроллбар можно использовать для отключения одной или обеих стрелок полосы прокрутки. Приложение отображает отключенные стрелки серым цветом и не реагирует на вводимые пользователем данные.
Запросы к полосе прокрутки
На следующей диаграмме показан код запроса, создаваемый пользователем при щелчке различных частей полосы прокрутки.
| Запрос | Действие | Ответ |
|---|---|---|
| построителя _ | Пользователь щелкает стрелку с верхней прокруткой. | Уменьшает значение ползунка полосы прокрутки; выполняет прокрутку к началу данных на одну единицу. |
| SB _ линедовн | Пользователь щелкает нижнюю стрелку прокрутки. | Увеличивает расположение ползунка; выполняет прокрутку к концу данных на одну единицу. |
| SB _ линелефт | Пользователь щелкает стрелку прокрутки влево. | Уменьшает значение ползунка полосы прокрутки; выполняет прокрутку к левому концу данных на одну единицу. |
| SB _ линеригхт | Пользователь щелкает стрелку вправо. | Увеличивает расположение ползунка; Прокручивает в сторону правого конца данных на одну единицу. |
| SB _ PageUp | Пользователь щелкает полосу прокрутки, Шафт над полем прокрутки. | Уменьшает расположение ползунка на число единиц данных в окне; выполняет прокрутку к началу данных по одинаковому количеству единиц. |
| SB _ PageDown | Пользователь щелкает полосу прокрутки Шафт под полем прокрутки. | Увеличивает значение поля прокрутки на число единиц данных в окне; выполняет прокрутку к концу данных по одинаковому количеству единиц. |
| SB _ пажелефт | Пользователь щелкает полосу прокрутки Шафт слева от ползунка. | Уменьшает расположение ползунка на число единиц данных в окне; выполняет прокрутку к левому концу данных по одинаковому количеству единиц. |
| SB _ пажеригхт | Пользователь щелкает полосу прокрутки Шафт справа от ползунка. | Увеличивает значение поля прокрутки на число единиц данных в окне; Прокручивает к правому концу данных по одинаковому количеству единиц. |
| SB _ сумбпоситион | Пользователь отпускает поле прокрутки после его перетаскивания. | Устанавливает ползунок полосы прокрутки в соответствии с позицией, указанной в сообщении; Прокручивает данные на одно и то же число единиц, перемещенных в ползунок полосы прокрутки. |
| SB _ сумбтракк | Пользователь перетаскивает ползунок полосы прокрутки. | Устанавливает ползунок полосы прокрутки в соответствии с позицией, указанной в сообщении, и прокручивает данные на то же количество единиц, которое прокручивается ползунок, для приложений, которые быстро нарисуют данные. Приложения, которые не могут быстро выводить данные, должны ждать _ код запроса SB сумбпоситион перед перемещением ползунка прокрутки и прокрутки данных. |
| SB _ ендскролл | Пользователь отпускает мышь после нажатия на стрелку или на полосе прокрутки Шафт. | Ответ не требуется. |
Полоса прокрутки создает _ код запроса SB сумбпоситион и SB _ сумбтракк, когда пользователь нажимает и перетаскивает ползунок. Приложение должно быть запрограммирован на обработку _ кода запроса SB сумбтракк или SB _ сумбпоситион.
_Код запроса SB сумбпоситион возникает, когда пользователь отпускает кнопку мыши после нажатия кнопки прокрутки. Приложение, обрабатывающее это сообщение, выполняет операцию прокрутки после того, как пользователь переместил бегунок в нужную точку и отпустил кнопку мыши.
_Код запроса SB сумбтракк возникает, когда пользователь перетаскивает ползунок прокрутки. Если приложение обрабатывает _ коды запросов SB сумбтракк, оно может прокручивать содержимое окна, когда пользователь перетаскивает ползунок. Однако в течение короткого периода времени полоса прокрутки может создавать много _ сумбтракк кода запроса SB, поэтому приложение должно обрабатывать эти коды запросов, только если оно может быстро перерисовывать содержимое окна.
Интерфейс клавиатуры для полосы прокрутки
Элемент управления «полоса прокрутки» предоставляет встроенный интерфейс клавиатуры, позволяющий пользователю выдавать прокрутку запросов с помощью клавиатуры. Стандартная полоса прокрутки не имеет. Когда элемент управления «полоса прокрутки» имеет фокус клавиатуры, он отправляет сообщения WM _ HSCROLL и WM _ VSCROLL в родительское окно, когда пользователь нажимает клавиши со стрелками. Код запроса отправляется с каждым сообщением, соответствующим клавише со стрелкой, нажатой пользователем. Ниже приведены клавиши со стрелками и соответствующие коды запросов.
| Клавиша со стрелкой | Код запроса |
|---|---|
| СБОЙ | SB _ линедовн или SB _ линеригхт |
| END | SB _ снизу |
| HOME | SB _ сверху |
| LEFT | SB _ или SB _ линелефт |
| Page Down | SB _ PageDown или SB _ пажеригхт |
| Page Up | SB _ PageUp или SB _ пажелефт |
| RIGHT | SB _ линедовн или SB _ линеригхт |
| UP | SB _ или SB _ линелефт |
Интерфейс клавиатуры элемента управления «полоса прокрутки» отправляет _ коды запросов верхнего и SB- _ нижней части SB. _Код запроса SB Top указывает, что пользователь достиг верхнего значения диапазона прокрутки. Приложение прокручивает содержимое окна вниз, чтобы отобразить верхнюю часть объекта данных. _Код запроса SB Bottom указывает, что пользователь достиг нижнего значения диапазона прокрутки. Если приложение обрабатывает _ код запроса с самым нижним периодом, он прокручивает содержимое окна вверх, чтобы было видно, что нижняя часть объекта данных является видимой.
Если вам нужен интерфейс клавиатуры для стандартной полосы прокрутки, можно создать его самостоятельно, обрабатывая сообщение WM _ KeyDown в процедуре окна, а затем выполнить соответствующее действие прокрутки на основе кода виртуального ключа, сопровождающего сообщение. Сведения о создании интерфейса клавиатуры для полосы прокрутки см. в разделе Создание интерфейса клавиатуры для стандартной полосы прокрутки.
Прокрутка клиентской области
Самый простой способ прокрутить содержимое клиентской области — стереть его, а затем перерисовать. Это метод, который приложение может использовать с _ кодами запросов SB PageUp, SB _ PageDown и SB _ Top, для которых обычно требуется совершенно новое содержимое.
Функцию скроллвиндовекс можно использовать для исключения части клиентской области из операции прокрутки. Это позволяет сохранять элементы с фиксированными положениями, например дочерними окнами, от перемещения в клиентской области. Он автоматически делает недействительную часть клиентской области, которая должна получить новую информацию, поэтому приложению не нужно вычислять собственные области отсечения. Дополнительные сведения об отсечении см. в разделе Обрезка.
Обычно приложение прокручивает содержимое окна в направлении, противоположном указанному полосой прокрутки. Например, когда пользователь щелкает полосу прокрутки Шафт в области под полем прокрутки, приложение прокручивает объект в окне вверх, чтобы отобразить часть объекта, которая находится ниже видимой части.

