Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тема 5. Особенности работы в MS Windows




 

Операционная система Windows выводит графику посредством интерфейса графических устройств GDI – Graphic Device Interface. Текст тоже рассматривается как графика. С точки зрения программирования GDI - динамически загружаемая библиотека (DLL). GDI обеспечивает единообразие работы с устройствами. Поэтому одно и то же изображение может выводиться на экран, принтер, плоттер. С точки зрения программной реализации отличий нет. Прикладная программа осуществляет вывод на логическое устройство. GDI ”знает” четыре типа логических устройств: экран дисплея, устройство получения твердой копии (принтер/плоттер), битовые образы, метафайлы. Два последних - псевдоустройства, обеспечивающие хранение информации в оперативной и долговременной памяти.

Логическое устройство имеет феноменальные характеристики, что дает программисту большую свободу выбора выразительных средств. Например, логический видеомонитор имеет огромное разрешение, способность отображать практически любой цвет (реально - до 16 млн. цветов). Характеристики конкретного устройства определяются при обращении GDI к соответствующему драйверу. Если задан цвет для палитры в 16 млн. цветов, а устройство не имеет такой возможности, GDI выбирает наиболее близкий к требуемому цвет. Для монохрома - градации серого. Для цвета и шрифта подбираются характеристики, по мнению системы максимально соответствующие запрошенным. Таким образом, возможна ситуация, когда приложение запрашивает у Windows одно, а получает другое.

GDI избавляет приложения Windows от необходимости учитывать многие (но не все) аппаратные особенности устройств вывода. Например, как мы видели в DOS, адресация видеопамяти адаптеров CGA, EGA, VGA, SVGA выполняется по-разному. К тому же представление видеоданных сильно зависит от видеорежима (разное количество байт на пиксел в зависимости от mode). Однако приложения Windows не работают непосредственно с видеопамятью. Вызываются соответствующие функции GDI, реализованного в виде DLL. Функции GDI также не работают с аппаратурой. Для выполнения нужной графической операции GDI вызывает драйвер устройства вывода, ориентированный на особенности аппаратуры.

Функции GDI и драйверы обеспечивают независимость приложений от аппаратуры. Это многие рассматривают как преимущество перед MS DOS, т.к. в MS DOS для повышения производительности приходится работать непосредственно с регистрами видеоконтроллера и видеопамятью. С другой стороны, недоступность операций низкого уровня не позволяет влиять на производительность и отдает решение этих вопросов создателям соответствующих системных программных средств. Использование технологии DirectX, а более конкретно - библиотек DirectDraw и Direct3D, позволяющих из Windows работать непосредственно с устройствами, здесь не рассматривается.

В MS DOS при работе с видеоадаптерами указываются конкретные цвета, из файлов загружаются конкретные шрифты Для новых устройств в программу вносятся изменения (хотя бы в связи с новыми именами файлов). Следовательно, программы MS DOS более аппаратно зависимы. Приложения Windows не меняются при смене аппаратуры, требуется только соответствующий драйвер. Чем лучше аппаратура, тем ближе цвет и шрифт будут к запрошенным. Таким образом, в MS DOS можно запросить только то, что имеется (“по одежке протягивай ножки”), в WINDOWS предложен другой подход к разработке приложений: запрашивай максимум того, что надо.

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

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

Драйвер устройства
Контекст устройства - структура из 800 байт (из них используется примерно 200 байт), которая описывает устройство в целом. Контекст устройства служит трем целям:

·

Устройство вывода
содержит набор инструментов рисования - характеристики пера, кисти и т.д.;

· организует связь с конкретным устройством;

· позволяет программе “рисовать” на этом устройстве.

Можно установить около 20 атрибутов контекста отображения. Когда, например, в редакторе Microsoft Word устанавливается размер шрифта, определяется толщина и стиль линий, формируется не что иное, как контекст отображения. Возможна иерархия контекстов отображения: общий (кэшируется Windows), контекст для класса окна (например, для класса диалоговых окон), для конкретного окна, для памяти (bitmap), для метафайла.

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

Т.к. Windows не позволяет работать напрямую с видеопамятью, среди графических функций отсутствуют функции работы с видеостраницами. В DOS механизм видеостраниц применяется для повышения плавности смены кадров (п. 3.2.2.6): пока пользователь просматривает одну видеостраницу (видимую), изображение строится на другой (активной). В Windows непосредственно этот прием использовать нельзя. Но возможна его эмуляция. Создаются один или несколько контекстов памяти, совместимых с контекстом окна или контекстом устройства. Они служат для покадрового построения изображения аналогично активной видеостранице. Создание контекста памяти выполняется с помощью функции CreateCompatibleDC. Сами функции рисования аналогичны DOS, но имеют дополнительный параметр, связанный с необходимостью ссылки на соответствующий контекст. В нужный момент производится копирование изображения из контекста памяти в контекст отображения. Для этого служит функция BitBlt.

Еще одна существенная особенность Windows - событийное управление. Внешние устройства (клавиатура, мышь и др.) посылают сообщение программе о наступлении некоторого события. Эти сообщения ставятся в очередь, откуда извлекаются в цикле обработки сообщений. Программа, в отличие от DOS, не должна все время опрашивать устройство. Когда событие произойдет, ей об этом “сообщат”. Windows сама устанавливает приоритет обработки событий. Так, события от клавиатуры и мыши, источником которых является пользователь, более приоритетны, чем события от таймера. GetMessage выбирает сообщения из очереди. DispatchMessage распределяет их окнам по требованию приложения. В DOS порядок обработки событий устанавливает программист. Его неудачные решения - причина появления неудобных в эксплуатации программ. В DOS есть тоже возможность обработки сообщений (см. пример для мыши в п. 4.2). Но это предоставляется не всегда. Схема обработки сообщений в DOS и Windows представлена ниже.




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 379; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.