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

Расскажем подробно: наличие в окне программы под windows полос прокрутки означает что - Полосу прокрутки следует отличать от слайдера, который является еще

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

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

Содержание

История и прогресс

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

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

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

В 1983 году у Apple Lisa были стрелки, указывающие вверх и вниз, кнопки страниц и большой палец фиксированного размера.

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

Также в 1985 году Viewpoint использовала правую кнопку для перемещения содержимого по процентам или по окну, а не по страницам.

В 1988 году компания Open Look создала большой палец лифта со стрелками прямо на нем. Щелчок по дорожке, перемещаемой по страницам, и автоповтор толкает указатель. Кабельные анкеры размещались в начале и конце документа, а центр лифта можно было перетащить.

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

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

В 2001 году Mac OS X 10.0 использовала пропорциональный большой палец и перемещала обе кнопки со стрелками в нижнюю часть панели.

В 2007 году iPhone и iOS включали обычную полосу прокрутки в веб-браузере и других приложениях, хотя она была предназначена только для вывода и с ней нельзя было взаимодействовать. В контактах была предусмотрена полоса прокрутки букв для перехода по содержимому.

В 2011 году Mac OS X 10.7 удалила кнопки с конца панели и была разработана так, чтобы больше походить на полосу прокрутки iOS. В том же выпуске Mac OS X 10.7 Apple представила «естественную прокрутку», что означает, что экран перемещается в том же направлении, что и пальцы пользователя, когда они используют жест прокрутки двумя пальцами. Если пальцы пользователя перемещаются вверх по трекпаду, контент на странице поднимается вверх, позволяя пользователю читать контент дальше по странице, и наоборот.

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

Применение

Перетаскивание пальцем

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

В Microsoft Windows перемещение мыши слишком далеко от большого пальца при перетаскивании приведет к сбросу положения прокрутки на предыдущее.

Колесо прокрутки

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

Клавиши со стрелками

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

Щелчок по желобу

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

Экранные кнопки со стрелками

В BeOS экранные кнопки прокрутки для обоих направлений появляются на обоих концах полосы прокрутки. В некоторых программах Microsoft Office дополнительные кнопки ⏪ и ⏩ могут использоваться для постраничной навигации.

Различные кнопки мыши

Тачпад Windows

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

Трекпад Mac

Альтернативные конструкции

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

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

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

Одновременная 2D-прокрутка

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

Настройка

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

WebKit также предоставляет множество псевдоклассов для изменения стиля полос прокрутки.

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

Ограничения и проблемы

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

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

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

Исследования

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

Источник

Окно – прямоугольная область экрана, в которой выполняются различные Windows-программы. Каждая программа имеет свое окно. Все окна имеют одинаковый состав и структуру.

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

В состав окна входят следующие элементы (Рис. 12):

строказаголовка – верхняя строка окна, в которой находится имя программы или имя окна;

кнопка сворачивания окна ;

кнопка восстановления окна (ее вид зависит от состояния окна);

кнопка закрытия окна ;

кнопка системного меню – открывает системное меню окна;

строка меню – содержит команды для управления окном;

панель инструментов – содержит кнопки, вызывающие наиболее часто употребляемые команды;

полосы прокрутки – позволяют просматривать содержимое окна вертикально и горизонтально.

рабочее поле – пространство для размещения объектов (текста, рисунков, значков и пр.) и работы с ними;

строка состояния – полоса, на которой расположены индикаторы состояния;

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

На рисунке, например, показано выполнение двух программ, причем обе они видны на экране: Paint (графическая программа) и WordPad (простой текстовый процессор, входящий в комплект поставки Windows 98). Каждой программе отведено ее собственное окно.

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

Окно может существовать в трех состояниях:

полноэкранное – окно развернуто на весь экран;

нормальное – окно занимает часть экрана ( Рис. 13 ) ;

свернутое – окно в свернутом состоянии.

Операции над окнами очень просты.

— Для того чтобы открыть окно, дважды щелкните по ее пиктограмме.

— Чтобы временно скрыть открытое окно (несколько разгрузить свой рабочий стол) щелкните по кнопке Свернуть данного окна.

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

— Для перемещения окна перетащите его, «ухватившись» указателем мыши за строку заголовка (наведя стрелку и нажав левую кнопку мыши), на новое место на экране.

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

— Чтобы закрыть окно, щелкните на кнопке Закрыть в верхнем правом углу окна.

— Чтобы повторно открыть закрытое окно, надо повторить все шаги, которые вы выполняли при первом открытии этого окна. Закрытие окна также приводит к исчезновению соответствующей ему кнопки на панели задач.

— Чтобы просмотреть все содержимое окна необходимо воспользоваться полосами прокрутки или клавишами управления курсором.

Полосы прокрутки (Рис. 12)

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

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

— кнопки вверх и вниз на вертикальной линейке предназначены для прокрутки содержимого экрана на 1 строку соответсвенно вверх или вниз;

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

— кнопки влево и вправо на горизонтальной линейке предназначены для прокрутки содержимого экрана на 1 столбец соответсвенно влево или вправо;

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

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

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

— поле ниже или выше (правее или левее) бегунка. При нажатии левой кнопки мыши на этом поле выполняется прокрутка содержимого окна на 1 экран соответсвенно выше или ниже (правее или левее).

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

Закрытие программ

Для закрытия какой-либо программы можно воспользоваться одним из следующих методов ( Рис. 14 ).

Щелкните на кнопке Закрыть в верхнем правом углу того окна, которое вы хотите закрыть.

Дважды щелкните на пиктограмме системного меню в верхнем левом углу того окна, которое вы хотите закрыть.

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

Контекстное меню (меню быстрого доступа)

Контекстное меню содержит основные команды по управлению объектом.

Для вызова контекстного меню нужно щелкнуть на объекте правой клавишей мыши. Например, если щелкнуть правой клавишей мыши на пиктограмме Мои документы, появится контекстное меню этой папки (Рис. 15), которое содержит определенный перечень опций. Пункты меню выбираются, как обычно, нажатием левой кнопки мыши.

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

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

Диалоговые окна

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

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

– кнопка закрытия окна с сохранением всех измененных параметров;

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

– кнопка закрытия окна без сохранения измененных параметров;

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

– кнопка сохранения всех измененных параметров без закрытия окна;

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

– кнопка закрытия окна, когда измененные параметры уже сохранены;

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

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

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

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

– поле списка – содержит список объектов, доступных для выбора; если содержимое списка не помещается в видимую часть, то появляются полосы прокрутки для просмотра длинных списков; чтобы выбрать объект следует щелкнуть на нем мышью;

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

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

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

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

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

– флажок – квадратное поле индикатора с меткой a внутри или без нее, используется для включения/ выключения режима (его имя написано рядом), который может находиться во включенном или отключенном состоянии;

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

Файлы и папки

Информация на компьютере хранится в файлах. Файлы располагаются в папках. Все папки, вложенные паки и файлы хранятся на накопителе на магнитном диске, или попросту диске.

Файл – поименованная область на диске хранящая информацию. Каждый файл имеет имя и расширение. Расширение указывает на тип файла. Имя файла может иметь до 255 символов; расширение – до 3 символов. Расширение отделяется от имени точкой.

Например: наличие в окне программы под windows полос прокрутки означает чтоДоговор аренды.doc

В имени и расширении файла нельзя использовать следующие символы:

Перед именем файла стоит его значок, который указывает на расширение (тип) файла. Наиболее часто встречаются такие значки файлов:

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

— файлы с расширением com, exe – исполняемые файлы;

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

– файлы с расширением bat – пакетные файлы;

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

– файлы с расширением doc – документы, созданные в текстовом процессоре Microsoft Word;

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

– файлы с расширением xls – таблицы, созданные в табличном процессоре Microsoft Excel.

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

– файлы с расширением bmp – рисунки, созданные в графическом редакторе Paint.

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

– файлы с расширением wbk – копии документов Microsoft Word, сделанные перед их изменением.

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

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

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

Шаблоны файлов (папок)

Поиск информации

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

Чтобы увидеть содержимое определенного диска, дважды щелкните на пиктограмме этого диска.

Чтобы увидеть содержимое какой-то папки, дважды щелкните на ее пиктограмме.

Чтобы увидеть содержимое какого-то файла, дважды щелкните на пиктограмме этого файла.

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

Для поиска файла выполните следующую процедуру.

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

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

— Установив все параметры поиска, щелкните на кнопке Найти и ждите, пока на экране не появится список имен файлов.

Выделение файлов и папок

Для выделения одного файла достаточно щелкнуть мышью на его имени.

Для выделения блока файлов необходимо щелкнуть в одном углу блока и растянуть выделение до противоположного угла.

Для выделения нескольких файлов подряд – выделить имя первого файла, нажать клавишу Shift и выделить последний файл из группы.

Для выделения нескольких файлов, расположенных отдельно – нажать Ctrl и щелкать по именам нужных файлов.

Копирование файлов и папок

— выделить файлы и папки;

— щелкнуть кнопку наличие в окне программы под windows полос прокрутки означает что;

— открыть папку, в которую необходимо скопировать файлы;

— щелкнуть кнопку наличие в окне программы под windows полос прокрутки означает что.

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

— выделить файлы и папки;

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

— перетянуть выделение из правой части окна на имя нужной папки.

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

Для удаления файлов и папок их нужно выделить и нажать клавишу Delete или кнопку наличие в окне программы под windows полос прокрутки означает что, или воспользоваться командой Удалить в контекстном меню.

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

Справка

Для того чтобы получить справку по любым вопросам, связанным с Windows 98, используйте встроенную справочную систему.

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

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

Источник

55

Размер рабочей области

Если вы уже работаете с существующими приложениями для Windows, то обнаружите, что размер окон может меняться в очень широких пределах. Большинство (если предположить отсутствие в окнах меню или полос прокрутки) окон можно развернуть, и рабочая область займет весь экран, за исключением панели заголовка программы. Полный размер этой развернутой рабочей области становится доступным, благодаря функции GetSystemMetrics, использующей параметры SM_CXFULLSCREEN и SM_CYFULLSCREEN. Для дисплея типа VGA возвращаемые значения равны 640 и 461 пикселей. Минимальный размер окна может быть совершенно незначительным, иногда почти невидимым, когда рабочая область фактически исчезает.

Одним из наиболее общих способов определения размера рабочей области окна является обработка сообщения WM_SIZE в оконной процедуре. Windows посылает в оконную процедуру сообщение WM_SIZE при любом изменении размеров окна. Переменная lParam, переданная в оконную процедуру, содержит ширину рабочей области в младшем слове и высоту в старшем слове. Код программы для обработки этого сообщения часто выглядит следующим образом:

static int cxClient, cyClient;

[другие инструкции программы] case WM_SIZE:

cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); return 0;

Макросы LOWORD и HIWORD определяются в заголовочных файлах Windows. Также как cxChar и cyChar, переменные cxClient и cyClient определяются внутри оконной процедуры в качестве статических, так как они используются позднее при обработке других сообщений.

В конечном итоге за сообщением WM_SIZE будет следовать сообщение WM_PAINT. Почему? Потому что при определении класса окна мы следующим образом задали стиль класса:

CS_HREDRAW | CS_VREDRAW

Такой стиль класса указывает Windows на необходимость перерисовки как при горизонтальных изменениях размеров, так и при вертикальных.

Вы можете рассчитать полное число строк текста, которые помещаются внутри рабочей области окна по формуле:

cyClient / cyChar

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

cxClient / cxChar

Если вы определяете cxChar и cyChar при обработке сообщения WM_CREATE, не беспокойтесь о возможном делении на 0 в этом выражении. Ваша оконная процедура получает сообщение WM_CREATE, когда WinMain вызывает CreateWindow. Первое сообщение WM_SIZE приходит несколько позднее, когда WinMain вызывает ShowWindow, благодаря этому cxChar и cyChar всегда являются положительными ненулевыми величинами.

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

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

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

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

56

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

Щелкните здесь для прокрутки на

Щелкните здесь для одну строку вверх прокрутки на одну

страницу вверх

Переместите бегунок для перехода в нужное место

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

Щелкните здесь для прокрутки на одну строку вниз

Рис. 3.7 Вертикальная полоса прокрутки

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

GetSystemMetrics.

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

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

Каждая полоса прокрутки имеет соответствующий «диапазон» (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, который обычно используется для полос прокрутки, создаваемых в окнах диалога.

58

Нажата: 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 <windows.h> #include <string.h> #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(&wndclass);

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(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

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;

60

switch(iMsg)

{

case WM_CREATE :

hdc = GetDC(hwnd);

GetTextMetrics(hdc, &tm); cxChar = tm.tmAveCharWidth;

cxCaps =(tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2; cyChar = tm.tmHeight + tm.tmExternalLeading;

ReleaseDC(hwnd, hdc);

SetScrollRange(hwnd, SB_VERT, 0, NUMLINES, FALSE); SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE); return 0;

case WM_SIZE :

cyClient = HIWORD(lParam); return 0;

case WM_VSCROLL : switch(LOWORD(wParam))

{

case SB_LINEUP : iVscrollPos -= 1; break;

case SB_LINEDOWN : iVscrollPos += 1; break;

case SB_PAGEUP :

iVscrollPos -= cyClient / cyChar; break;

case SB_PAGEDOWN :

iVscrollPos += cyClient / cyChar; break;

case SB_THUMBPOSITION :

iVscrollPos = HIWORD(wParam); break;

default : break;

}

iVscrollPos = max(0, min(iVscrollPos, NUMLINES));

if (iVscrollPos != GetScrollPos(hwnd, SB_VERT))

{

SetScrollPos(hwnd, SB_VERT, iVscrollPos, TRUE);

InvalidateRect(hwnd, NULL, TRUE);

}

return 0;

case WM_PAINT :

hdc = BeginPaint(hwnd, &ps);

for(i = 0; i < NUMLINES; i++)

{

y = cyChar *(1 — iVscrollPos + i);

TextOut(

hdc, cxChar, y,

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, &ps); 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 для каждой строки рассчитывалась следующим образом:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

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

В Windows есть два типа полос прокрутки. Элементы первого типа являются частью окна (включая диалоговое окно), поэтому их называют полосами прокрутки окна. Элементы второго типа существуют независимо и называются независимыми полосами прокрутки. Элементы первого типа описываются классом CWnd, а второго — CScrollBar.

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

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

Независимые полосы прокрутки в диалогах

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

Обработка сообщений полосы прокрутки

Так как полоса прокрутки пришла из 16-разрядной Windows 3.1, то управлять полосой прокрутки довольно сложно. Полоса прокрутки сама ничего не делает. Даже для того, чтобы она «прокручивалась» на экране, необходим дополнительный программный код. Полосы прокрутки при выполнении над ними действий посылают сообщения WM_VSCROLL и WM_HSCROLL при активизации соответственно вертикальной или горизонтальной полосы прокрутки. Эти сообщения обрабатываются функциями со следующими прототипами:

afx_msg void CWnd::OnVScroll(UINT SBCode, int Pos, CScrollBar *SB);
afx_msg void CWnd::OnHScroll(UINT SBCode, int Pos, CScrollBar *SB);

Следует отметить, что при наличии нескольких горизонтальных или вертикальных полос прокрутки для всех них будет вызываться один и тот же обработчик. Первый параметр, SBCode, содержит код выполненного над полосой прокрутки действия. Если работа ведется с вертикальной полосой прокрутки, то при каждом изменении положения ползунка на одну позицию вверх посылается код SB_LINEUP. При изменении позиции на одну вниз посылается код SB_LINEDOWN. Аналогично, при постраничном перемещении генерируются коды SB_PAGEUP и SB_PAGEDOWN. Если работа ведется с горизонтальной полосой прокрутки, то при каждом передвижении ползунка на одну позицию влево посылается код SB_LINELEFT. При изменении его положения на одну позицию вправо посылается код SB_LINERIGHT. При постраничном перемещении генерируются сообщения SB_PAGELEFT и SB_PAGERIGHT. Для обоих типов полос прокрутки при перемещении ползунка на новую позицию посылается код SB_THUMBPOSITION. Если при этом кнопка мыши удерживается нажатой, то дополнительно генерируется сообщение с кодом SB_THUMBTRACK. Это позволяет отслеживать перемещения ползунка, прежде чем мышь будет отпущена. Параметр Pos указывает текущую позицию ползунка. Если сообщение сгенерировано стандартной полосой прокрутки, то параметр SB будет равен 0. Если же оно было сгенерировано независимой полосой прокрутки, то этот параметр будет содержать указатель на объект. Это предоставляет весьма неуклюжий способ различать, какая конкретно независимая полоса прокрутки сгенерировала сообщение. Для этого нужно использовать функцию CWnd:: GetDlgCtrlID(), которая возвращает идентификатор элемента управления. Такое неудобство связано с тем, что MFC повторяет внутреннее устройство Windows, а не является библиотекой сверхвысокого уровня для быстрой разработки приложений.

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

Ранее, для установки различных параметров полосы прокрутки, использовались отдельные функции, которые были в Windows 3.1. С появлением Windows 95 появилась возможность управления полосами прокрутки с помощью одной функции SetScrollInfo(). Эта функция позволяет сделать полосу прокрутки пропорциональной (в этом случае, чем меньше диапазон полосы прокрутки, тем длиннее будет ее ползунок). Функция GetScrollInfo() предназначена для чтения параметров полосы прокрутки. В отличие от старых функций, эти функции работают с 32-разрядными данными. Для стандартных полос прокрутки используется функция:

BOOL CWnd::SetScrollInfo(int Which, LPSCROLLINFO pSI, BOOL Redraw = TRUE);

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

BOOL CScrollBar::SetScrollInfo(LPSCROLLINFO pSI, BOOL Redraw = TRUE);

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

BOOL CWnd::GetScrollInfo(int Which, LPSCROLLINFO pSI, UINT Mask = SIF_ALL);

Информация, получаемая от полосы прокрутки, записывается в структуру по адресу pSI. Значение параметра Mask определяет, какая информация записывается в структуру. По умолчанию заполняются все поля. Для независимых полос прокрутки вариант функции таков:

BOOL CScrollBar::SetScrollInfo(LPSCROLLINFO pSI, UINT Mask = SIF_ALL);

Значение параметров аналогичное предыдущему случаю. Во всех вариантах функций используется следующая структура типа SCROLLINFO:

typedef struct tagSCROLLINFO
 {
UINT cbSize; // размер самой структуры
UINT fMask; // маска для параметров
int nMin; // нижняя граница диапазона
int nMax; // верхняя граница диапазона
UINT nPage; // размер страницы
int nPos; // позиция ползунка
int nTrackPos; // позиция ползунка во время перемещения
} SCROLLINFO;

Поле fMask определяет, какое из полей структуры содержит требуемую информацию. Используются константы с префиксом SIF_, которые можно объединять операцией «| «. Поле nPos содержит статическую позицию ползунка. Поле nPage содержит размер страницы для пропорциональных полос прокрутки. Для получения обычной пропорциональной полосы прокрутки в этом поле нужно задать значение 1. Поля nMin и nMax содержат нижнюю и верхнюю границы диапазона полосы прокрутки. Поле nTracksPos содержит позицию ползунка при его перемещении, это значение не может быть установлено.

Графический вывод

Классические функции графического устройства

При выводе на экран графической информации: линии, текста, изображения и т.п. программа обращается к функциям GDI (graphic device interface) интерфейса графического устройства. Эти функции поддерживаются каркасом MFC и для удобства разработчика объединены в классы. Основным классом для работы с графикой является класс CDC и производные от него CPaintDC, CClientDC, CWindowDC, которые отличаются от базового класса только конструкторами и деструкторами. Исключением является класс CMetaFileDC. Класс CDC инкапсулирует понятие контекста устройства DC (device context).

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

Особенности производных классов контекста устройства

Объекты CMetaFileDC обеспечивают доступ к метафайлам Windows. Вызовы функций-членов класса CMetaFileDC записываются в связанном с соответствующим объектом файле. Для построения изображения требуется воспроизвести последовательность команд, записанных в метафайле.

Классы CClientDC и CWindowDC отличаются друг от друга лишь тем, что представляют для рисования различные области окна. CClientDC представляет клиентскую часть (часть окна без рамки, заголовка, меню, панели управления и строки состояния). CWindowDC – полнооконный контекст устройства, позволяет рисовать в произвольной области окна программы.

Объекты класса CPaintDC используются только в обработчике сообщения WM_PAINT, генерируемого в ответ на вызов функций UpdateWindow или RedrawWindow и необходимы, если требуется переопределить функцию OnPaint() для конкретного дисплея. По умолчанию обработчик OnPaint() вызывает OnDraw(CDC*) с уже настроенным нужным образом контекстом. Конструктор CPaintDC определен так, что выполняет все действия необходимые для инициализации данного дисплея.

Создание и уничтожение объектов CDC

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

1. Создать объект в стеке, тогда он будет уничтожен автоматически:

void CMyView::SomeFunction(...)
{
CRect cr;
CClientDC dc(this);
dc.GetClipBox(cr);
}

2. Получить указатель на объект с помощью CWnd::GetDC(), при этом перед выходом из функции вызвать ReleaseDC():

void CMyView::SomeFunction(...)
{
  CRect rect;
  CDC* pDC = GetDC();
  pDC->GetClipBox(rect);
  ReleaseDC(pDC);
}

Замечание: нельзя удалять CDC – объект, указатель на который передается функции OnDraw. За его удаление отвечает каркас MFC.

Состояние контекста устройства. Объекты GDI

Состояние контекста устройства определяется связанными с ним графическими объектами. Свойства контекста устройства назначаются с помощью методов класса CDC. GDI- объекты загружаются в контекст устройства вызовом перегруженной функции SelectObject. В любой текущий момент с контекстом может быть связан только один объект каждого типа. Все объекты GDI представлены в MFC с помощью классов. CGdiObject – базовый абстрактный класс для GDI объектов, которые являются экземплярами классов наследников.

  1. CBitmap – класс, инкапсулирующий растровые изображения (битовые массивы). Растровые изображения используются для отображения картинок и создания кистей.
  2. CBrush – кисть. Точечный шаблон, использующийся для закрашивания областей окна.
  3. CFont – шрифт. Полный набор символов алфавита определенного вида и размера. Шрифты хранятся на диске как ресурсы.
  4. CPallete – палитра. Таблица преобразования цветов, позволяет приложению полностью задействовать цветовые возможности устройства, не вызывая конфликта с другими приложениями, работающими с этим же устройством.
  5. CPen – перо. Инструмент для рисования линий и границ фигур.
  6. CRgn – регион. Область окна, определяемая прямоугольником, эллипсом или всевозможными их комбинациями.

При создании GDI объектов вызываются конструкторы соответствующих классов. Но для некоторых этого недостаточно. Например, создание объектов типа CFont или CRgn требует вызова CreateFont(…) или CreatePolygonRgn(…). Прежде чем удалять GDI объект, его требуется вначале «отсоединить» от контекста устройства. Память, выделенная под GDI объекты, принадлежит процессу и освобождается при его завершении. Такие объекты как растровые изображение занимают значительный объем памяти и за их своевременным удалением необходимо следить.

Пример работы с GDI – объектом:

void CMyView::OnDraw(CDC* pDC)
{
  CPen myPen(PS_SOLID, 2, RGB(255,0,0));
  CPen *oldPen = pDC->SelectObject(&myPen);  //Присоединение нового пера и сохранение старого
//------------------------------------
  //Рисование....
//------------------------------------
 
pDC->SelectObject(oldPen);  //Возвращение контекста устройства в прежнее состояние
} //созданное в стеке перо будет удалено при выходе из функции

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

Элементы окон

  Строка заголовка

Строка меню

Панель инструментов

Адресная строка

Список типичных задач

Граница окна

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

Строка состояния

Типы окон Windows

  Окна дисков и папок.

Программные окна (окна приложений).

Окна документов (вторичные окна).

Окна запросов (диалоговые).

   

Элементы диалогового окна

Управление окнами

 

Изменение размера окна

Перемещение окон

Сворачивание окна

Упорядочивание окон

Закрытие окна

Переключение между окнами

Основой работы в системе Windows является работа с окнами. Любая пиктограмма

может быть развернута в окно двойным щелчком мыши.

Окно — это прямоугольная область экрана, в которой выводится

определенная информация: содержимое дисков, программы, создаваемые пользователем

документы, запросы и сообщения Windows. Окна можно открывать (разворачивать),

закрывать, сворачивать, перемещать, упорядочивать, менять размеры .

Открытое окно может занимать целый экран или его часть.

Закрыть окно — значит полностью убрать его с экрана. Закрытие

программного окна означает удаление программы из оперативной памяти.

Свернутые окна отображаются в виде кнопок в Панели задач.

Программа, окно которой свернуто, остается в оперативной памяти и с ней

в любой момент можно возобновить работу. Чтобы вновь раскрыть свернутое

окно нужно щелкнуть на кнопке в Панели задач.

Элементы окон

Несмотря на многообразие окон, используемых в Windows, управление окнами

осуществляется по единым правилам. Практически все окна (кроме некоторых

окон запросов) содержат обязательные элементы, предназначенные для управления

окнами. На рис. 6 показаны элементы окна Мой компьютер.

Рис. 6. Окно папки Мой компьютер

В рабочей области окна папки отображаются значки объектов,

содержащихся в папке. Содержимое программного окна зависит от назначения

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

Все остальные элементы окна – полосы, строки, кнопки, – являются элементами

управления.

Строка заголовка

В середине строки заголовка всегда отображено название окна, а слева располагается

(кнопка системного меню или пиктограмма), а справа – кнопки

управления. Эти элементы окна могут приводится в действие щелчком мыши,

т.е. нужно указать на кнопку и выполнить щелчок левой клавишей мыши.

Системный значок— это уменьшенная пиктограмма окна. Один щелчок

на этой кнопке вызывает системное меню, а двойной щелчок — закрывает окно.

Кнопки управления включают в себя:

Строка меню

Строка меню располагается под строкой заголовка окна. Пункты меню содержат

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

Диалоговые окна и окна документов не содержат строки меню.

Панель инструментов

Под строкой меню может находиться Панель инструментов или пиктографическое

меню — набор кнопок предназначенных для выполнения различных команд по управлению

содержимым окна (рис. 7). Кнопки панели инструментов дублируют команды основного

меню, но их использование повышает скорость и эффективность работы, т.к.

для выполнения команды достаточно щелкнуть мышью на кнопке, что значительно

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

командные кнопки для выполнения наиболее часто встречающихся операций, но

в отличие от строки меню ограниченные по количеству команд. При указании

мыши кнопка выделяется (подсвечивается). Если этого не происходит, значит,

кнопка в данный момент недоступна.

Изображение на каждой кнопке в панелях инструментов дает представление

о функции кнопки и помогает быстро их запомнить. Подсказку о любом инструменте

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

появится всплывающая подсказка о назначении кнопки.

Рис. 7. Панель инструментов

Адресная строка

В адресной строке указан путь доступа к текущей папке, что удобно для ориентации

в файловой структуре. Адресная строка позволяет выполнить быстрый переход к

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

правой части строки).

Список типичных задач

В каждой папке Windows предлагается удобный доступ к наиболее общеупотребительным

задачам управления файлами и папками. Если открыть какую-либо папку на компьютере,

в левой части окна папки, рядом с ее содержимым появится список задач, предоставляющий

доступ к наиболее употребительным задачам управления файлами и папками при помощи

гиперссылок.

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

  1. В разделе Задачи для файлов и папок отображаются команды для работы

    с файлами и папками, позволяющие переименовать, скопировать, переместить или

    удалить этот файл или папку. Набор команд в этом разделе зависит от выбора

    объекта. Можно также отправить файл по электронной почте или опубликовать

    его в Интернете.

  2. Раздел Другие места содержит ссылки (адреса) для быстрого перехода

    к другим папкам и дискам.

  3. Раздел Подробно содержит информацию о текущем или выделенном объекте.

    В Windows XP существует несколько папок, в которых помимо элементарных задач

    управления файлами и папками, доступных в каждой папке, есть ссылки на задачи

    особого рода.

  4. Папка Мои рисунки содержит раздел Задачи для изображений,

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

  5. Папка Моя музыка содержит раздел Задачи для музыки ссылки

    на воспроизведение и поиск музыки.

  6. Папка Мой компьютер и другие системные папки содержат раздел

    Системные задачи, являющийся контекстным. Используя ссылки на задачи в

    этой папке, можно просматривать сведения о компьютере, изменять системные

    параметры на панели управления и выполнять другие процедуры системного управления.

  7. Папка Корзина содержит раздел Задачи для Корзины, с помощью

    которого можно очистить ее содержимое и восстанавливать удаленные файлы и

    папки по месту их первоначального пребывания.

Граница окна

Утолщенная граница предназначена для изменения размера окна при помощи мыши.

Граница окна видна, если окно не распахнуто на весь экран.

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

Полосы прокрутки появляются у правой и/или нижней границ окна в случае,

когда в рабочей области окна не помещается полностью его содержимое. На

концах полос расположены кнопки с изображением стрелок. Щелчок мышью на

такой кнопке вызывает смещение содержимого окна на строку в соответствующем

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

какая часть содержимого окна отображается в данный момент.

Щелчок мышью на области полосы между бегунком и кнопкой-стрелкой вызовет

смещение на видимую часть экрана.

Для быстрого прокручивания содержимого окна следует перетащить мышью

бегунок.

Строка состояния

В стоке состояния выводится дополнительная информация о содержимом окна (например,

указывается количество объектов в папке, их суммарный объем и т.п.). Информация

в строке состояния является динамической, показывая сведения о выделенных в

папке объектах

Типы окон Windows

В Windows поддерживаются окна 4-х типов.

1. Окна дисков и папок

В таких окнах отображается содержимое дисков и папок. Любую папку Windows

можно открыть в своем окне. С помощью окон папок можно просмотреть всю файловую

структуру дисков. В строке заголовка указывается имя папки, ниже располагаются

меню, панель инструментов.

2. Программные окна (окна приложений)

Это окна, в которых работают загруженные в оперативную память Windows-программы

(а возможно и DOS-программы). В строке заголовка – имя программы, ниже – строка

меню, панель инструментов (может быть не одна), линейка. Внутри этих окон

открываются окна документов.

3. Окна документов (вторичные окна)

Это окна, в которых отображаются документы, созданные в Windows-программах

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

Информация из каждого окна может быть сохранена в отдельном файле. Вторичные

окна всегда располагаются только в пределах своего программного окна, не имеют

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

4. Окна запросов (диалоговые)

Окна запросов появляются во время работы с операционной системой и приложениями,

располагаясь поверх всех остальных окон на экране. В них содержится запрос

какой-либо информации от пользователя или подтверждении его действий. Окна

запросов нельзя изменять в размерах, сворачивать и разворачивать, их можно

только закрывать. Такие окна закрываются автоматически после ответа на запрос

или принудительно – щелчком на закрывающей кнопке. Для ответа на запрос диалоговые

окна имеют разнообразные поля и кнопки.

Диалоговое окно может быть модальным или немодальным.

Модальное окно блокирует работу приложения. Пользователь должен завершить все

операции с этим окном и закрыть его, чтобы вернуться в окно приложения (папки,

документа). Различают три вида модальных окон:

Немодальное окно не останавливает работу приложения. Пользователь может щелчком

мыши, не закрывая окна, переходить в окно приложения (документа), работать с

ним, а затем щелчком возвращаться в диалоговое окно (к таким окнам можно отнести

окно команды «Помощник», окна справочной системы).

Обычно диалоговое окно состоит из строки заголовка и элементов диалогового

окна.

Элементы диалогового окна

В зависимости от функций окна набор этих средств меняется в широком диапазоне.

Большинство средств диалога поддается строгой классификации, и работа с ними

практически одинакова во всех приложениях Windows. Типовыми средствами, входящими

в состав диалогового окна, являются:

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

Основные виды элементов:

– кнопка закрытия окна с сохранения всех измененных параметров;

– кнопка закрытия окна без сохранения измененных параметров;

– кнопка сохранения всех измененных параметров без закрытия окна;

– кнопка закрытия окна, когда измененные параметры уже сохранены;

– поле ввода – ограниченная прямоугольной рамкой область, в которую пользователь

может вводить с клавиатуры текст; чтобы ввести данные в поле необходимо

сначала щелкнуть в нем мышью;

– счетчик – поле с двумя кнопками справа; можно щелкнуть в него мышью

и набрать значения параметра на клавиатуре или щелкать на кнопках: для увеличения

параметра стрелка вверх, для уменьшения –стрелка вниз;

– поле списка содержат список объектов, доступных для выбора; если содержимое

списка не помещается в видимую часть, то появляются полосы прокрутки для

просмотра длинных списков; чтобы выбрать объект следует щелкнуть на нем

мышью;

– поле раскрывающегося списка в видимой части имеет только значение текущего

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

кнопке «стрелка вниз»;

– переключатели – круги с черной точкой или без нее, предназначенные для

выбора одного из взаимоисключающих режимов;

– флажок – квадратное поле индикатора с меткой «галочкой» внутри

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

рядом), который может находиться во включенном или отключенном состоянии;

– кнопка контекстной справки, для вызова контекстной справки следует щелкнуть

ее, а потом неизвестный элемент;

– скользящая кнопка управления (ползунок) служит для увеличения/уменьшения

числового значения поля путем перемещения ползунка;

– вкладки – расположенные под строкой заголовка окна страницы, объединяющие

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

Активная вкладка выводится на передний план, занимая полностью окно. Для

смены вкладки достаточно щелкнуть мышью на ее названии. Можно для переключения

использовать клавиатуру: вперед – Ctrl+Tab или Ctrl+Page Up, назад – Ctrl+Shift+Tab

или Ctrl+Page Down;

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

вносимые изменения параметров.

Управление окнами

Окно может существовать в трех состояниях:

  • полноэкранное – окно развернуто на весь экран;

  • нормальное – окно занимает часть экрана;

  • свернутое – окно «свернуто» до кнопки (уменьшено до размеров пиктограммы).

Понятие управление окном включает действия:

  1. изменить размер окна, развернуть окно на весь экран;
  2. переместить окно по экрану;
  3. свернуть окно, восстановить предыдущий размер окна;
  4. упорядочить окна на экране;
  5. закрыть окно;
  6. переключаться между окнами.

Способы управления окном заключаются в использовании кнопок управления окном;

системного меню окна (активность каждой команды зависит от текущего состояния

окна); протягивания мышью различных элементов окна; использование клавиатуры.

Изменение размера окна

Щелчок на кнопке максимизации развернет окно на весь экран.

Чтобы восстановить прежний размер окна, нужно щелкнуть на кнопке восстановления

размера.

Замечание. Чтобы распахнуть окно на весь экран (или восстановить

его размер), можно дважды щелкнуть на заголовке окна или выбрать соответствующую

команду (Развернуть/Восстановить) в системном меню.

Чтобы изменить размер окна, нужно указать мышью точно на границу окна или

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

нажать левую клавишу мыши и перетащить границу, увеличивая или уменьшая окно.

Затем отпустить клавишу мыши.

Замечание. Если на границе окна указатель мыши не превращается в двустороннюю

стрелку, значит, размер такого окна изменить нельзя. Как правило, не могут менять

размер окна запросов.

Перемещение окон

Чтобы переместить окно в другое место экрана, следует указать мышью на заголовок

окна и, нажав левую клавишу мыши, перетащить окно на новое место. Короче говоря,

окно можно перетащить мышью, «ухватившись» за его заголовок. Эта операция позволяет

расположить окна на экране удобным образом.

Замечание. Чтобы переместить окно, можно в системном меню окна выбрать

команду Переместить, клавишами-стрелками поместить окно в нужное место и нажать

клавишу.

Сворачивание окна

Чтобы свернуть окно, нужно щелкнуть на кнопке минимизации.

Можно также выдать команду Свернуть одним из ниже приведенных способов:

  • из контекстного меню кнопки окна в Панели задач;
  • из системного меню.

    Замечание. Чтобы свернуть окно, можно дважды щелкнуть на кнопке окна

    в Панели задач.

    Можно сворачивать все открытые окна сразу. Для этого нужно нажать соответствующую

    кнопку в панели Быстрый запуск в Панели задач или выбрать нужную команду

    в контекстном меню Панели задач.

    Замечание. Свернуть все окна можно и при помощи клавиатуры:

    Windows+M (Shift+Windows+M — развернуть);

    Windows+D.

Упорядочивание окон

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

задач выбрать одну из команд:

  • Окна каскадом — окна одного размера, лежат стопкой, смещены так, что видны

    все заголовки;

  • Окна сверху вниз и Окна слева направо – окна одного размера, делят экран

    на равные части, не перекрывая друг друга;

  • Свернуть все окна (Показать Рабочий стол) – чтобы освободить от окон Рабочий

    стол;

  • Отменить последнюю (выполненную) команду.

    Замечание. Возможно одновременное выполнение команд упорядочивания,

    сворачивания и закрытия для нескольких окон. Для этого нужно щелкать кнопки

    нужных окон в Панели задач, удерживая клавишу Ctrl и вызвать их контекстное

    меню.

Закрытие окна

Чтобы закрыть окно, нужно щелкнуть на кнопке закрытия. Это самый простой и

быстрый способ закрытия любого окна. Однако существует еще несколько способов

закрытия окон:

  • комбинация клавиш Alt+F4;
  • двойной щелчок на кнопке системного меню;
  • выбор команды Закрыть в системном меню;
  • выбор команды Закрыть (Выход) в группе Файл основного меню

    окна;

  • выбор команды Закрыть в контекстном меню кнопки окна в Панели задач;
  • щелчок на кнопке Снять задачу в окне Диспетчер задач при

    выделенном имени закрываемого окна.

    Можно закрыть сразу несколько окно, используя команду Закрыть группу в

    контекстном меню кнопки группы окон. Если нужная группа окон отсутствует,

    то можно предварительно выделить её, щелкая по кнопкам в Панели задач с нажатой

    клавишей Ctrl.

    Замечание. Закрытие программного окна эквивалентно завершению

    программы. Закрытие программного окна означает удаление программы из оперативной

    памяти.

Переключение между окнами

Поскольку Windows – многозадачная система, то в ней можно открыть сразу несколько

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

окон одно является активным – это окно, с которым работают в данный

момент, а остальные – неактивными или пассивными.

Признаки активного окна:

  1. Заголовок активного окна более яркий, чем заголовки других окон.
  2. Кнопка активного окна в Панели задач выглядит нажатой, в то время как кнопки

    других окон – отжатой.

  3. Активное окно располагается поверх других окон.
  4. Для операционной системы все открытые окна считаются задачами, независимо

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

    – значит сделать активным соответствующее окно.

Способы переключения между окнами:

  • щелкнуть мышью на кнопке окна в Панели задач;
  • щелкнуть мышью на любом видимом участке неактивного окна;
  • использовать комбинацию клавиш Alt+Tab – нажать клавишу Alt и, не отпуская

    ее, нажимать клавишу Tab. При этом появится панель со значками всех открытых

    окон. Когда будет выделен нужный значок, отпустить обе клавиши.

  • Alt+Esc — переключается между несвернутыми окнами.

Понравилась статья? Поделить с друзьями:
  • Накопительное обновление для windows 10 version 1803
  • Накопительный пакет обновления часовых поясов для операционных систем windows 2020
  • Накопительное обновление для windows 10 version 1709 не устанавливается
  • Накопительный пакет обновления для windows 2008 r2
  • Накопительное обновление для windows 10 version 1709 kb4493440