Наличие в окне программы под Windows полос прокрутки означает что выберите один

Иногда содержимое короткое (без полосы прокрутки), а иногда длинное (видимая полоса прокрутки).

19 ответов 19

небольшой плагин для него.

используйте это так,

протестировано в Firefox, Chrome, IE6,7,8

но не работает должным образом селектор тегов тела

Я обнаружил, что если у вас есть горизонтальная полоса прокрутки, которая приводит к появлению вертикальной полосы прокрутки, эта функция не работает.

Я нашел другое решение. использовать clientHeight

С этим связана проблема: если горизонтальная полоса прокрутки также существует, тогда будет возвращено значение false, даже если вертикальная полоса прокрутки существует до тех пор, пока высота не будет уменьшена на высоту горизонтальной полосы прокрутки.

Обратите внимание, что на компьютерах Mac полоса прокрутки плавает над содержимым и исчезает, когда она не используется. В Windows он всегда виден и занимает место по горизонтали. Поэтому тот факт, что содержимое можно прокручивать (что обнаруживает эта функция), не означает, что полоса прокрутки обязательно присутствует.

Использование полосы прокрутки.flv

(function($) this.width); > >)(jQuery); это работает для горизонтального переполнения. Подходит для проверки адаптивности веб-сайтов на мобильных устройствах в iframe.

Это можно сделать с помощью комбинации атрибутов Element.scrollHeight и Element.clientHeight.

Атрибут Element.scrollHeight, доступный только для чтения, представляет собой измерение высоты содержимого элемента, включая содержимое, невидимое на экране из-за переполнения. Значение scrollHeight равно минимальному значению clientHeight, которое требуется элементу для размещения всего содержимого в точке обзора без использования вертикальной полосы прокрутки. Он включает заполнение элемента, но не его поля.

Свойство Element.clientHeight, доступное только для чтения, возвращает внутреннюю высоту элемента в пикселях, включая отступы, но не высоту горизонтальной полосы прокрутки, границу или поля.

clientHeight можно вычислить как CSS height + CSS padding — высота горизонтальной полосы прокрутки (если есть).

Поэтому элемент будет отображать полосу прокрутки, если высота прокрутки больше, чем высота клиента, поэтому ответ на ваш вопрос:

Вам придется запускать эту функцию каждый раз, когда непосредственно изменяется размер элемента или одного из его дочерних элементов (что также может повлиять на нее). Этот ответ менее чем наполовину полон без упомянутых вещей.

Возможно более простое решение.

Это предполагает, что полоса прокрутки находится в окне, а не в элементе div. Предложите изменить ссылку, чтобы предложить: «Если вам нужно только протестировать полосу прокрутки в главном окне, вы можете попробовать:»

Я должен немного изменить то, что сказал Рейгель:

innerHeight подсчитывает высоту элемента управления, а также его верхний и нижний отступы

Он не проверяет значение «переполнение», чтобы убедиться, что полосы прокрутки появятся, когда будет выполнено это условие scrollHeight.

Видимая полоса прокрутки Windows 10 (ИЛИ ГДЕ ПРЯЧЕТСЯ БЕГУНОК). Решение есть!!!

Ответ, который работает только для вас, не является ответом. Откуда вы знаете, что у других людей есть в их css? В вашем ответе не упоминается это ограничение. Если кто-то не может добавить ваш ответ и заставить его работать, это плохой ответ.

Вам нужен element.scrollHeight. Сравните это с $(element).height() .

Я создал новый пользовательский селектор :pseudo для jQuery, чтобы проверить, имеет ли элемент одно из следующих свойств css:

  1. переполнение: [прокрутка|авто]
  2. переполнение-x: [прокрутка|авто]
  3. переполнение-y: [прокрутка|авто]

Я хотел найти ближайший прокручиваемый родительский элемент другого элемента, поэтому я также написал еще один небольшой плагин jQuery для поиска ближайшего родительского элемента с переполнением.

Возможно, это решение не самое лучшее, но похоже, что оно работает. Я использовал его вместе с плагином $.scrollTo. Иногда мне нужно знать, находится ли элемент внутри другого прокручиваемого контейнера. В этом случае я хочу прокрутить родительский прокручиваемый элемент по сравнению с окном.

Возможно, мне следовало заключить это в один подключаемый модуль и добавить селектор psuedo как часть подключаемого модуля, а также предоставить «ближайший» метод для поиска ближайшего (родительского) прокручиваемого контейнера.

Кто угодно. вот оно.

Подключаемый модуль jQuery $.isScrollable:

$(‘:scrollable’) псевдоселектор jQuery:

Подключаемый модуль jQuery $.scrollableparent():

Реализация довольно проста

ОБНОВЛЕНИЕ: я обнаружил, что Роберт Коритник уже придумал гораздо более мощный псевдоселектор :scrollable, который будет определять прокручиваемые оси и высоту прокручиваемых контейнеров, как часть его плагина jQuery $.scrollintoview(). Плагин scrollintoview

Вот его причудливый псевдо-селектор (реквизит):

Тьфу, все ответы здесь неполные, и давайте уже прекратим использовать jquery в ответах SO, пожалуйста. Проверьте документацию по jquery, если вам нужна информация о jquery.

Вот обобщенная функция на чистом javascript для полной проверки того, имеет ли элемент полосы прокрутки:

Почему нельзя использовать jquery в вопросе, отмеченном как jquery? Пожалуйста, добавьте ссылки на ту часть документации jquery, которую вы упомянули.

(scrollWidth/Height — clientWidth/Height) — хороший индикатор наличия полосы прокрутки, но во многих случаях он даст вам «ложноположительный» ответ. если вам нужно быть точным, я бы предложил использовать следующую функцию. вместо того, чтобы пытаться угадать, можно ли прокручивать элемент, вы можете прокручивать его.

Первое решение выше работает только в IE Второе решение выше работает только в FF

Эта комбинация обеих функций работает в обоих браузерах:

Я собираюсь еще больше рассказать об этом для тех несчастных, которые, как и я, используют один из современных фреймворков js, а не JQuery, и полностью отказались от людей из этой темы:

это было написано на Angular 6, но если вы напишете на React 16, Vue 2, Polymer, Ionic, React-Native, вы будете знать, что нужно сделать, чтобы адаптировать его. И это целый компонент, поэтому он должен быть простым.

в html будет div с классом «elem-list», который стилизован в css или scss, чтобы иметь высоту и значение переполнения, которое не скрыто. (то есть auto или sroll )

Я запускаю эту оценку при событии прокрутки, потому что моя конечная цель состояла в том, чтобы иметь «автоматические прокрутки фокуса», которые решают, прокручивают ли они весь набор компонентов по горизонтали, если указанные компоненты не имеют доступной вертикальной прокрутки, и в противном случае прокручивают только внутренности один из компонентов по вертикали.

но вы можете поместить eval в другое место, чтобы оно запускалось чем-то другим.

здесь важно помнить, что вы никогда не будете вынуждены вернуться к использованию JQuery, всегда есть способ получить доступ к тем же функциям, которые он имеет, не используя его.

Вертикальная или горизонтальная полоса, обычно расположенная в крайнем правом или нижнем углу окна, которая позволяет перемещать область просмотра окна вверх, вниз, влево или вправо. Большинство людей сегодня знакомы с полосами прокрутки, потому что им приходится прокручивать вверх и вниз почти каждую веб-страницу в Интернете.

Обзор полосы прокрутки

Ниже показано изображение окна Microsoft Windows с вертикальной и горизонтальной полосами прокрутки.

полоса прокрутки в окне

Как прокручивать и использовать полосу прокрутки

Полосы прокрутки используются с помощью мыши, сенсорной панели или клавиатуры. С помощью мыши вы можете перемещать полосу прокрутки, щелкая стрелку прокрутки на любом конце полосы прокрутки. Вы также можете щелкнуть пустую часть полосы прокрутки или перетащить ползунок прокрутки. На клавиатуре вы можете использовать клавиши со стрелками вверх или вниз для прокрутки нескольких строк за раз. Клавиши Page Up и Page Down или пробел позволяют прокручивать страницу вниз по одной странице за раз.

Сегодня большинство компьютеров оснащены мышью с колесиком или кнопкой, позволяющей прокручивать вверх и вниз, а в некоторых случаях и слева направо. Дополнительные сведения об этих мышах см. в определении IntelliMouse.

На компьютере Apple некоторые программы, например Safari, могут не отображать полосу прокрутки. Для прокрутки вверх и вниз в этих программах коснитесь двумя пальцами сенсорной панели или сенсорной мыши и перетащите их вверх или вниз.

См. нашу страницу с сенсорной панелью, чтобы узнать о других способах прокрутки с помощью сенсорной панели ноутбука.

Как использовать или включить горизонтальную полосу прокрутки?

Горизонтальная полоса прокрутки часто отсутствует или отключена, потому что отображаемый текст или другое содержимое переносится или изменяется в размере для предотвращения горизонтальной прокрутки. Например, на этой веб-странице отсутствует горизонтальная прокрутка, поскольку она рассчитана на размер экрана. Если вы просматриваете страницу с горизонтальной прокруткой, вы можете прокрутить вправо, щелкнув стрелку вправо на горизонтальной полосе прокрутки.

Читайте также:
Изменить разрешение программы Windows 10

Чтобы включить горизонтальную прокрутку в длинном текстовом документе, можно отключить перенос слов. При работе с изображениями или другими документами увеличение также включает горизонтальную прокрутку.

Сколько полос прокрутки в окне?

Часто в окне есть только одна полоса прокрутки, которая представляет собой вертикальную полосу прокрутки, позволяющую прокручивать окно вверх и вниз. Многие программы автоматически переносят текст в окно при изменении размера окна или увеличении документа. Программы с фиксированным размером окна или без переноса слов отображают горизонтальную полосу прокрутки при изменении размера окна.Для этих программ будет две полосы прокрутки, горизонтальная и вертикальная полоса прокрутки.

Должен ли я использовать «полосу прокрутки» или «полосу прокрутки» в своем письме?

И «полоса прокрутки», и «полоса прокрутки» являются правильными в зависимости от контекста и места их использования или соблюдения руководства по стилю. В большинстве руководств по стилю два слова «полоса прокрутки» используются при описании полосы или функции, которая позволяет вам прокручивать вверх, вниз, влево или вправо. При обращении к конфигурации, объекту или параметру «полоса прокрутки» используется одно слово.

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

Объем контента

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

Масштаб содержания

При уменьшении размера существующего контента полосы прокрутки могут исчезнуть. Например, уменьшение свойства font-size абзаца приведет к уменьшению всего текста в этом абзаце; это означает, что для абзаца потребуется меньше места. Если размер шрифта уменьшится до такой степени, что весь абзац сможет поместиться внутри содержащего его элемента Div, то Div не будет нуждаться в полосах прокрутки для размещения абзаца.

Увеличение в браузере

Использование элементов управления увеличением или масштабированием в браузере может привести к исчезновению полос прокрутки. Наблюдайте за этим явлением, открыв веб-страницу и несколько раз нажав «Ctrl-». Ваши действия приводят к уменьшению размера содержимого страницы. Меньший размер занимает меньше места на экране, что снижает вероятность выхода контента за пределы страницы. Так как содержимое имеет все необходимое пространство, ему больше не нужны полосы прокрутки.

Размер контейнера

Полосы прокрутки могут исчезнуть, когда элемент страницы, содержащий содержимое, расширяется, чтобы вместить избыточное содержимое. Например, вы можете изменить размер окна веб-браузера так, чтобы оно занимало только половину доступной ширины вашего монитора. Это действие приводит к появлению горизонтальной полосы прокрутки, потому что содержимое страницы не помещается в таком узком пространстве. Нажатие кнопки «Развернуть» в окне браузера увеличит ширину окна до ширины монитора, что приведет к исчезновению горизонтальной полосы прокрутки.

Программирование страницы

Полосы прокрутки могут исчезнуть, если веб-разработчик пишет операторы программирования, препятствующие их отображению. Например, когда элемент HTML Div содержит больше текста, чем может отобразить за один раз, разработчик может указать, что элемент Div скрывает лишнее, а не размещает его с помощью полос прокрутки. Разработчик достигает этого, создавая операторы CSS или каскадных таблиц стилей. Следующая инструкция CSS скрывает лишний текст Div, а не указывает на его присутствие полосами прокрутки: overflow:hidden.

Информация о версии

Информация в этой статье относится к программированию HTML и CSS. В зависимости от других технологий он может незначительно или значительно отличаться.

DigitalOcean объединяет усилия с CSS-Tricks! Специальное приветственное предложение: получите бесплатный кредит в размере 100 долларов США.

  1. Содержимое не перекомпоновывается в зависимости от того, есть полоса прокрутки или нет
  2. Пользователи одинаково взаимодействуют независимо от того, есть ли у них «наложенные» полосы прокрутки или нет.

Итак, мы все находимся на одной странице. Полоса прокрутки – это элемент, обычно расположенный сбоку от браузера (формально именуемый в спецификации «агентом пользователя» или UA), который указывает относительное положение прокрутки. к общему доступному пространству на веб-странице.

Они традиционно представляли собой визуальный контейнер со скользящим индикатором. Они называются классическими полосами прокрутки. Индикатор находится внутри поля, а поле занимает физическое пространство на экране, когда оно отображается.

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

При этом полосы прокрутки могут появляться в других местах.Помимо расположения справа от браузера, мы увидим полосы прокрутки на элементах HTML, где содержимое выходит за пределы элемента, а свойство переполнения (или overflow-x и overflow-y) установлено на значение прокрутки. И обратите внимание, что наличие overflow-x означает, что у нас есть горизонтальная прокрутка в дополнение к вертикальной прокрутке.

Это то, о чем мы говорим. Не сам индикатор, а контейнер, в котором он находится. Это желоб. Использует ли браузер классическую или оверлейную полосу прокрутки, полностью зависит от самого ПА. Это не нам решать. Это относится и к ширине полосы прокрутки.

Пользовательский агент определяет это и не дает нам никакого контроля над этим.

Именно здесь на помощь приходит полоса прокрутки. Мы можем указать, присутствует ли полоса прокрутки в ее классическом и оверлейном вариантах.

Двойной амперсанд () разделяет два или более компонентов, которые должны встречаться в любом порядке.

Вопросительный знак (?) указывает на то, что предыдущий тип, слово или группа являются необязательными (встречаются ноль или один раз).

  • auto (начальное значение): почти описанное выше поведение по умолчанию. Установка этого свойства для этого значения позволяет классическим полосам прокрутки использовать недвижимое пространство в пользовательском интерфейсе для элементов, для которых свойство переполнения этих элементов установлено на прокрутку или авто. И наоборот, накладные полосы прокрутки вообще не занимают места, располагаясь поверх элемента.
  • stable : это добавляет немного самоуверенного поведения, всегда оставляя место для желоба полосы прокрутки, пока свойство переполнения для того же элемента установлено на прокрутку или автоматически и мы имеем дело с классическая полоса прокрутки — даже если поле не переполняется. И наоборот, это не повлияет на полосу прокрутки наложения.

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

«G» обозначает случаи, когда пространство зарезервировано для полосы прокрутки, «f?» случаи, когда пространство зарезервировано для полосы прокрутки, если было указано force, и случаи пустых ячеек, когда пространство не зарезервировано.

Свойство полосы прокрутки определено в модуле переполнения уровня 4, который находится в статусе рабочего проекта. Это означает, что эта работа еще не завершена и может измениться с настоящего момента до того момента, когда черновик перейдет в категорию «Рекомендация-кандидат».

Спецификация модуля переполнения уровня 3 также является рабочим проектом, так что это хороший показатель того, что (1) пройдет некоторое время, прежде чем полоса прокрутки станет рекомендацией, и (2) она все еще находится в стадии разработки.

  • Как взломать драйвер Сан-Франциско
  • Как удалить плагин из fl studio 20
  • Ls не является внутренней или внешней командой для исполняемой программы или пакетного файла
  • Как установить программу на mac os
  • Перестала заряжать емкость аккумулятора, биос что это такое

Источник: kompyuter-gid.ru

Запуск ОС Windows. Рабочий стол. Инструменты рабочего стола.

Методические указания предназначены для выполнения лабораторно-практической работы по курсу «Информатика и ИКТ» на занятиях НТО в старших классах средней школы и занятий в классах с углубленным изучением информатики.

Методические указания содержат теоретическую часть, которая даёт общее представление об операционной системе Windows.

СОДЕРЖАНИЕ

I. Теоретическая часть …………………………………….
Основные функции системы Windows ……….…………….
Запуск ОС Windows. Рабочий стол. Инструменты рабочего стола……………………………………………………………
Панель задач ……….……………………………………….…
Манипулятор типа “мышь”.
Виды окон Windows ………………………………………….
Элементы окна …………………………………………….….
Файлы и папки………………………….………………….
Создание новой папки………………………………………..
Перемещение и копирование объектов………………….
Переименование папок, файлов, ярлыков …………………
Удаление папок, файлов, ярлыков………………………..…
Настройка мыши.…………………….
Настройка фонового узора Рабочего стола. ……………….
Заставки.…………….
Настройка схем оформления…………………………………
II. Практическая часть……………………………….…….
Контрольные вопросы………………………………
Литература………………………………………….………

Теоретическая часть

Операционная система (ОС) – это совокупность программных средств, осуществляющих управление ресурсами ЭВМ, запуск прикладных программ и их взаимодействие с внешними устройствами и другими программами, а также обеспечивающих диалог пользователя с компьютером.

Читайте также:
Это программа заблокирована системным администратором Windows 10

ОС загружается при включении компьютера. Она предоставляет пользователю удобный способ общения (интерфейс) с вычислительной системой. Интерфейс при этом может быть программным и пользовательским.

Программный интерфейс – это совокупность средств, обеспечивающих взаимодействие устройств и программ в рамках вычислительной системы.

Пользовательский интерфейс – это программные и аппаратные средства взаимодействия пользователя с программой или ЭВМ. В свою очередь, пользовательский интерфейс может быть командным или объектно-ориентированным.

Командный интерфейс предполагает ввод пользователем команд с клавиатуры при выполнении действий по управлению ресурсами компьютера.

Объектно-ориентированный интерфейс – это управление ресурсами вычислительной системы посредством осуществления операций над объектами, представляющими файлы, каталоги (папки), дисководы, программы, документы и т. д.

Каждый компьютер обязательно комплектуется операционной системой, для каждой из которых создается свой набор прикладных программ (приложений).

Большинство операционных систем модифицируются и совершенствуются в направлении исправления ошибок и включения новых возможностей. В целях сохранения преемственности новая модификация операционной системы не переименовывается, а приобретает название версии. При этом увеличение цифры до точки отражает существенные изменения, вносимые в операционную систему, а увеличение цифр, стоящих после точки, – незначительные изменения (например, исправление ошибок). Чем больше номер версии, тем большими возможностями обладает система.

В середине 80-х годов фирмой Microsoft была начата работа над созданием многозадачных операционных систем для IBM-совместимых компьютеров, одной из которых была Windows. Однако сколько-нибудь широкого распространения в это время они не получили, что объяснялось недостаточными вычислительными возможностями персональных компьютеров.

С появлением микропроцессоров серии 80386 новая версия графической оболочки Windows — Windows 3.1 постепенно стала вытеснять текстовые оболочки. С появлением процессоров серии 80486 на большинстве новых ПК устанавливалась операционная система MS-DOS с графической оболочкой Windows 3.1 или более поздней версией -Windows 3.11.

Следующим логичным шагом корпорации Microsoft стало создание операционной системы, в которой графический интерфейс был уже не надстройкой, а неотъемлемой частью системы. Так появились операционные системы Windows 95 и Windows NT. Стандарты графического интерфейса системы Windows 95, а также последующих версий Windows 98, Windows Me, Windows 2000, Windows XP несколько отличаются от стандартов Windows 3.1 х, но в основном идеология сохранена.

Основные функции системы Windows

Windows является графической операционной системой для компьютеров платформы IBM PC. Ее основные средства управления – графический манипулятор мышь и клавиатура. Система предназначена для управления автономным компьютером, но также содержит все необходимое для создания небольшой локальной компьютерной сети и имеет средства для интеграции компьютера во всемирную сеть (Интернет).

Как и любая операционная система. Windows должна обеспечить выполнение следующих задач:

· управление аппаратными средствами компьютера;

· обеспечение работы с файловой системой;

· запуск прикладных программ.

Кроме этого Windows обеспечивает:

· одновременную работу нескольких программ;

· обмен данными между различными программами;

· поддержку масштабируемых шрифтов;

· единую справочную систему.

Запуск ОС Windows. Рабочий стол. Инструменты рабочего стола.

При включении компьютера, нажав кнопку Power на системном блоке, процессор обращается к программе, записанной в ПЗУ, которая осуществляет проверку подключенных устройств к компьютеру. А затем передаёт управление операционной системе Windows, находящейся на жестком диске. После загрузки ОС Windows и на экране монитора вы должны увидеть Рабочий стол.

Рабочий стол – это графическая среда, на которой отображаются объекты Windows и элементы управления Windows. Все, с чем мы имеем дело, работая с компьютером в данной системе, можно отнести либо к объектам, либо к элементам управления. В исходном состоянии на Рабочем столе можно наблюдать несколько экранных значков и Панель задач. Значки – это графическое представление объектов Windows, а Панель задач – один из основных элементов управления.

Разновидностью значка являются ярлыки. Если значки представляют сам объект, то ярлыки представляют образ объекта, в котором записан маршрут к данному объекту. У объекта может быть очень много ярлыков, и они могут располагаться где угодно. Удаление ярлыка не приводит к удалению объекта, на который он указывает. Визуально ярлык отличается от значка тем, что у него в левом нижним углу присутствует значок со стрелкой.

Панель задач

Светло-серая полоса внизу экрана – это Панель задач.

Она содержит командную кнопку “ Пуск ”. При щелчке на ней левой кнопкой мыши (или если одновременно нажать клавиши Ctrl+Esc) открывается меню, которое называется еще Главным меню. С помощью него можно быстро запустить желаемую программу, изменить настройки компьютера, вызвать справку по ОС Windows, найти необходимый файл, папку, завершить работу с ОС Windows, и т.д. При медленном перемещении по строкам меню указателем мыши открываются подменю для тех пунктов, возле которых указана стрелка вправо. Строки подменю могут в свою очередь быть или исполняемой командой, или заголовком следующей серии команд подменю.

В правой части Панели задач располагаются, по желанию пользователя, Индикатор шрифта, Значок системного времени, Регулятор громкости звука.

Индикатор шрифта позволяет переключать режим клавиатуры на желаемый язык.

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

Регулятор громкости звука выводится пользователем, если у него есть дополнительные устройства, подсоединяемые к компьютеру, как Звуковая карта и Устройства воспроизведения звуков.

Манипулятор типа “мышь”

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

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

Полосы прокрутки

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

Вы можете пользоваться полосами прокрутки для вывода на экран текста, графики, электронных таблиц, записей баз данных, картинок — всего, что требует больше пространства, чем доступно в рабочей области окна. Полосы прокрутки предназначены для просмотра информации как в вертикальном (движение вверх и вниз), так и в горизонтальном (движение вправо и влево) направлениях.

Вы можете щелкнуть мышью на стрелке в любом конце полосы прокрутки или между стрелками. Бегунок («scroll box» или «thumb») перемещается по длине полосы прокрутки, индицируя положение информации на экране относительно документа в целом. Вы также можете с помощью мыши переместить бегунок в конкретное положение. На рис. 3.7 показано рекомендуемое использование вертикальной полосы прокрутки для просмотра текста.

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

Документация Windows и идентификаторы ее заголовочных файлов основываются на точке зрения пользователя: Прокрутка вверх означает движение к началу документа; прокрутка вниз означает движение к концу. Щелкните здесь для прокрутки на Щелкните здесь для одну строку вверх прокрутки на одну страницу вверх Переместите бегунок для перехода в нужное место Щелкните здесь для прокрутки на одну страницу вниз Щелкните здесь для прокрутки на одну строку вниз Рис.

3.7 Вертикальная полоса прокрутки Вставить в ваше окно приложения вертикальную или горизонтальную полосу прокрутки очень просто. Все, что вам нужно сделать, это включить идентификатор WS_VSCROLL (вертикальная прокрутка) и WS_HSCROLLW (горизонтальная прокрутка) или оба сразу в описание стиля окна в инструкции CreateWindow . Эти полосы прокрутки всегда размещаются у правого края или в нижней части окна и занимают всю высоту или ширину рабочей области.

Рабочая область не включает в себя пространство, занятое полосами прокрутки. Ширина вертикальной полосы прокрутки и высота горизонтальной постоянны для конкретного дисплейного драйвера. Если вам необходимы эти значения, вы можете получить их (как вы могли бы заметить), вызвав функцию GetSystemMetrics . Windows обеспечивает всю логику работы мыши с полосами прокрутки. Однако, у полос прокрутки нет интерфейса клавиатуры. Если вы хотите дублировать клавишами управления курсором некоторые функции полос прокрутки, вы должны точно реализовать эту логику (как это делается, можно прочесть в главе 5, целиком посвященной клавиатуре).

Читайте также:
В какой программе делать буклеты в Windows 10

Диапазон и положение полос прокрутки

Каждая полоса прокрутки имеет соответствующий «диапазон» (range) (два целых, отражающих минимальное и максимальное значение) и «положение» (position) (местоположение бегунка внутри диапазона). Когда бегунок находится в крайней верхней (или крайней левой) части полосы прокрутки, положение бегунка соответствует минимальному значению диапазона.

Крайнее правое (или крайнее нижнее) положение бегунка на полосе прокрутки соответствует максимальному значению диапазона. По умолчанию устанавливается следующий диапазон полосы прокрутки: 0 (сверху или слева) и 100 (снизу или справа), но диапазон легко изменить на какое-нибудь более подходящее для вашей программы значение: SetScrollRange(hwnd, iBar, iMin, iMax, bRedraw); Параметр iBar равен либо SB_VERT, либо SB_HORZ, iMin и iMax являются минимальной и максимальной границами диапазона, а bRedraw устанавливается в TRUE, если Вы хотите, чтобы Windows перерисовала полосы прокрутки на основе вновь заданного диапазона. Положение бегунка всегда дискретно. Например, полоса прокрутки с диапазоном от 0 до 4 имеет пять положений бегунка, как показано на рис. 3.8. Для установки нового положения бегунка внутри диапазона полосы прокрутки можно использовать функцию SetScrollPos : SetScrollPos(hwnd, iBar, iPos, bRedraw);

Параметр iPos — это новое положение бегунка, оно должно быть задано внутри диапазона от iMin до iMax . Для получения текущего диапазона и положения полосы прокрутки в Windows используются похожие функции ( GetScrollRange и GetScrollPos ).

57 Если в вашей программе используются полосы прокрутки, вы совместно с Windows берете на себя ответственность за поддержку полос прокрутки и обновление положения бегунка. Далее перечислены сферы ответственности Windows по поддержке полос прокрутки: • Управляет логикой работы мыши с полосой прокрутки. • Обеспечивает временную «инверсию цвета» при нажатии на кнопку мыши на полосе прокрутки. • Перемещает бегунок в соответствие с тем, как внутри полосы прокрутки его перемещает пользователь. • Отправляет сообщения полосы прокрутки в оконную процедуру для окна, содержащего полосу прокрутки. Ниже представлены сферы ответственности вашей программы: • Инициализация диапазона полосы прокрутки. • Обработка сообщений полосы прокрутки. • Обновление положения бегунка полосы прокрутки. Положение 0 Положение 1 Положение 2 Положение 3 Положение 4

Положение 0 Положение 1 Положение 2 Положение 3 Положение 4

Рис. 3.8 Полосы прокрутки с пятью положениями бегунков

Сообщения полос прокрутки

Windows посылает оконной процедуре асинхронные сообщения WM_VSCROLL и WM_HSCROLL, когда на полосе прокрутки щелкают мышью или перетаскивается бегунок. Каждое действие мыши на полосе прокрутки вызывает появление по крайней мере двух сообщений, одного при нажатии кнопки мыши и другого, когда ее отпускают.

Младшее слово параметра wParam , которое объединяет сообщения WM_VSCROLL и WM_HSCROLL — это число, показывающее, что мышь осуществляет какие-то действия на полосе прокрутки. Его значения соответствуют определенным идентификаторам, которые начинаются с SB_, что означает «полоса прокрутки» (scroll bar).

Хотя в некоторых из этих идентификаторов используются слова «UP» и «DOWN», они применяются и к горизонтальным и к вертикальным полосам прокрутки, как показано на рис. 3.9. Ваша оконная процедура может получить множество сообщений типа SB_LINEUP, SB_PAGEUP, SB_LINEDOWN или SB_PSGEDOWN, если кнопка мыши остается нажатой при перемещении по полосе прокрутки.

Сообщение SB_ENDSCROLL показывает, что кнопка мыши отпущена. Как правило, сообщения SB_ENDSCROLL можно игнорировать. Если младшее слово параметра wParam равно SB_THUMBTRACK или SB_THUMBPOSITION, то старшее слово wParam определяет текущее положение полосы прокрутки. Это положение находится между минимальным и максимальным значениями диапазона полосы прокрутки.

Во всех других случаях при работе с полосами прокрутки старшее слово wParam следует игнорировать. Вы также можете игнорировать параметр lParam , который обычно используется для полос прокрутки, создаваемых в окнах диалога.

Нажата: SB_LINEUP
Отпущена: SB ENDSCROLL
Нажата: SB_PAGEUP
Отпущена: SB_ ENDSCROLL
Нажата: SB_THUMBTRACK
Отпущена:
Нажата: SB_PAGEDOWN
Отпущена: SB_ENDSCROLL
Нажата: SB_LINEDOWN
Отпущена: SB_ENDSCROLL
Рис. 3.9 Значения идентификаторов для параметра wParam сообщений
полосы прокрутки

В документации по Windows указано, что младшее слово wParam может также быть равно SB_TOP или SB_BOTTOM. Оно показывает, что полоса прокрутки была переведена в свое максимальное или минимальное положение. Однако, вы никогда не получите эти значения для полосы прокрутки, созданной в окне вашего приложения. Обработка сообщений SB_THUMBTRACK и SB_THUMBPOSITION весьма проблематична.

Если вы устанавливаете большой диапазон полосы прокрутки, а пользователь быстро перемещает бегунок по полосе, то Windows отправит вашей оконной функции множество сообщений SB_THUMBTRACK. Ваша программа столкнется с проблемой обработки этих сообщений. По этой причине в большинстве приложений Windows эти сообщения игнорируются, а действия предпринимаются только при получении сообщения SB_THUMBPOSITION, которое означает, что бегунок оставлен в покое. Однако, если у вас есть возможность быстро обновлять содержимое экрана, вы можете захотеть включить в программу обработку сообщений SB_THUMBTRACK. Но знайте, что те пользователи, которые обнаружат, что ваша программа мгновенно реагирует на перемещение бегунка по полосе прокрутки, несомненно будут пытаться двигать его как можно быстрее, чтобы понаблюдать, сможет ли программа отследить это движение — и они будут несказанно удовлетворены, если этого не произойдет.

Прокрутка в программе SYSMETS

Достаточно объяснений. Самое время использовать этот материал на практике. Давайте начнем с простого. Начнем мы с вертикальной прокрутки, поскольку требуется она гораздо чаще. Горизонтальная прокрутка может подождать. SYSMETS2 представлена на рис.

3.10. Обновленный вызов функции CreateWindow добавляет вертикальную полосу прокрутки к окну, благодаря включению в описание стиля окна в CreateWindow идентификатора WS_VSCROLL: WS_OVERLAPPEDWINDOW | WS_VSCROLL SYSMETS2.MAK #———————— # SYSMETS2.MAK make file #———————— sysmets2.exe : sysmets2.obj $(LINKER) $(GUIFLAGS) -OUT:sysmets2.exe sysmets2.obj $(GUILIBS) sysmets2.obj : sysmets2.c sysmets.h $(CC) $(CFLAGS) sysmets2.c

59 SYSMETS2.C /*—————————————————- SYSMETS2.C — System Metrics Display Program No. 2 (c) Charles Petzold, 1996 —————————————————-*/ #include #include #include «sysmets.h» LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) < static char szAppName[] = «SysMets2»;

HWND hwnd;
MSG msg;
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

RegisterClassEx( hwnd = CreateWindow( szAppName, «Get System Metrics No. 2», WS_OVERLAPPEDWINDOW | WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while(GetMessage( TranslateMessage( DispatchMessage( >return msg.wParam; > LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) <

static int cxChar, cxCaps, cyChar, cyClient, iVscrollPos;
char szBuffer[10];
HDC hdc;
int i, y;
PAINTSTRUCT ps;
TEXTMETRIC tm;

61 sysmetrics[i].szLabel, strlen(sysmetrics[i].szLabel) ); TextOut( hdc, cxChar + 22 * cxCaps, y, sysmetrics[i].szDesc, strlen(sysmetrics[i].szDesc) ); SetTextAlign(hdc, TA_RIGHT | TA_TOP); TextOut( hdc, cxChar + 22 * cxCaps + 40 * cxChar, y, szBuffer, wsprintf( szBuffer, «%5d», GetSystemMetrics(sysmetrics[i].iIndex) ) ); SetTextAlign(hdc, TA_LEFT | TA_TOP); > EndPaint(hwnd, return 0; case WM_DESTROY : PostQuitMessage(0); return 0; > return DefWindowProc(hwnd, iMsg, wParam, lParam); > Рис. 3.10 Программа SYSMETS2 К оконной процедуре WndProc добавляются две строки для установки диапазона и положения вертикальной полосы прокрутки во время обработки сообщения WM_CREATE: SetScrollRange(hwnd, SB_VERT, 0, NUMLINES, FALSE); SetScrollPass(hwnd, SB_VERT, iVscrollPos, TRUE); Структура sysmetrics содержит NUMLINES строк текста, поэтому границы диапазона полосы прокрутки устанавливается от 0 до NUMLINES.

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

Если положение бегунка полосы прокрутки находится в крайнем нижнем положении полосы, то последняя строка текста находится на самом верху рабочей области окна. Для упрощения обработки сообщений WM_VSCROLL статическая переменная с именем iVscrollPos определяется внутри оконной процедуры WndProc . Эта переменная соответствует текущему положению бегунка полосы прокрутки. Что касается сообщений SB_LINEUP и SB_LINEDOWN, то все, что нужно сделать, это изменить положение прокрутки на 1. При получении сообщений SB_PAGEUP и SB_PAGEDOWN появляется возможность перемещать текст постранично (вернее «поэкранно»), или, что то же самое, изменять положение полосы прокрутки на величину, равную cyClient деленную на cyChar . Для SB_THUMBPOSITION новое положение бегунка определяется старшим словом wParam . Сообщения SB_ENDSCROLL и SB_THUMBTRACK игнорируются. Затем параметр iVscrollPos устанавливается с использованием макросов min и max , чтобы гарантировать, что значение параметра будет находиться между минимальным и максимальным значениями диапазона. Если положение прокрутки изменилось, оно обновляется с помощью функции SetScrollPos и все окно делается недействительным путем вызова InvalidateRect . При вызове функции InvalidateRect вырабатывается сообщение WM_PAINT. Когда исходная программа SYSMETS1 обрабатывала сообщение WM_PAINT, координата y для каждой строки рассчитывалась следующим образом:

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru