Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programming_Windows_95_Part_I.pdf
Скачиваний:
97
Добавлен:
05.06.2014
Размер:
4.61 Mб
Скачать

Глава 2 Hello, Windows 95

2

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

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

Тогда вы можете спросить: "Если программировать для Windows так трудно, зачем эти хлопоты?"

Ответ очевиден: "Вероятно, у вас нет другого выхода". В конце концов Windows так широко проникла на рынок PC-совместимых компьютеров, что необходимость программирования для "голой" MS-DOS (неважно в символьном режиме или графике) продлится недолго. Если вы пишете коммерческие приложения для широкого круга пользователей, обозреватели журналов по программному обеспечению компьютерной техники будут фактически игнорировать ваш товар, если он не работает под Windows. Если Вы пишете узкоспециализированные программы, то вашим пользователям (и вашим нанимателям!) не понравится тот факт, что ваши программы плохо сочетаются с существующими приложениями Windows, которыми они пользуются.

Отличительная особенность Windows

Windows обладает важными преимуществами и для пользователей, и для программистов по сравнению со средой MS-DOS. Выгоды для пользователей и выгоды для создателей программ на самом деле весьма схожи, поскольку задача создателя программы состоит в том, чтобы дать пользователю то, в чем он нуждается и то, что он хочет. Windows 95 делает это возможным.

Графический интерфейс пользователя

Windows — это графический интерфейс пользователя (Graphical User Interface, GUI), иногда его еще называют "визуальный интерфейс" или "графическая оконная среда". Концепции, давшие начало этому типу пользовательского интерфейса, берут свое начало в середине семидесятых годов, от первой работы, сделанной на

Xerox Palo Alto Research Center (PARC) для таких машин как Alto и Star, и для такой среды как Smalltalk. Позднее эта работа была взята за основу и популяризована корпорацией Apple Computer, во-первых, в злополучной модели Lisa и, затем, год спустя в гораздо более удачной модели Macintosh, введенной в эксплуатацию в январе 1984 года.

После появления компьютера Macintosh, графические интерфейсы пользователя получили широкое распространение, причем как в сфере персональных компьютеров, так и не персональных компьютеров. Сейчас совершенно очевидно, что графический интерфейс пользователя является (по словам Чарльза Симони из Microsoft) наиболее важным "великим достижением" в сфере персональных компьютеров.

18

Концепции и обоснование GUI

Все графические интерфейсы пользователя делают возможным использование графики на растровом экране дисплея. Графика дает лучшее восприятие действительного положения вещей на экране, визуально богатую среду для передачи информации и возможность WYSIWYG (What you see is what you get, что вы видите, то и получите) как для графики, так и для форматированного для печати документов текста.

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

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

Содержимое интерфейса пользователя

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

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

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

Преимущество многозадачности

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

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

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

19

Управление памятью

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

Даже Windows 1, работающая на процессоре 8088, была способна реализовать такой тип управления памятью. В реальном режиме это можно рассматривать только как пример поразительного искусства создателей программного обеспечения. Программы, работающие под Windows могут перераспределять память; размер программы может быть больше, чем размер оперативной памяти в каждый момент времени. Windows может удалить часть кодов выполняемой программы из памяти, а позднее вновь загрузить эти коды из EXE-файла. Пользователь может запустить несколько копий, называемых "экземплярами" программы; и у всех этих экземпляров в памяти оказывается совместно используемый ими код программы. Программы, запущенные в Windows, могут использовать функции из других файлов, которые называются "динамически подключаемыми библиотеками" (DLL). Windows содержит механизм для связи программ во время их работы с функциями из динамически подключаемых библиотек. Сама по себе операционная система Windows по существу является набором динамически подключаемых библиотек.

Таким образом, даже Windows 1, несмотря на ограничение размера оперативной памяти емкостью 640 килобайт, эффективно работала, не требуя какой бы то ни было дополнительной памяти. Но на этом фирма Microsoft не остановилась: операционная система Windows 2 дала приложениям для Windows доступ к отображаемой памяти (EMS), а Windows 3, работая в защищенном режиме, дала приложениям для Windows доступ к 16 мегабайтам расширенной памяти. И наконец Windows 95 сняла эти прежние ограничения, предоставив 32-разрядную операционную систему с плоским адресным пространством.

Независимость графического интерфейса от оборудования

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

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

Установка на IBM PC интерфейса, независимого от устройства отображения информации, была для создателей Windows непростым делом. Конструкция PC была основана на принципе открытой архитектуры. Треть производителей аппаратуры для PC были ориентированы на производство периферийных устройств и создали множество их типов. Хотя и появилось несколько стандартов, общепринятые программы для PC должны были поддерживать каждую из множества очень разных конфигураций оборудования. Например, для программ текстовых редакторов MS-DOS было вполне обычно продавать их вместе с одной или двумя дискетами с небольшими файлами, каждый из которых предназначался для поддержки отдельного принтера. В Windows 95 эти драйверы не нужны, поскольку подобная функция поддерживается самой операционной системой.

Соглашения операционной системы Windows

Программирование для Windows 95 — это реализация принципа: все или ничего. Например, вы не сможете написать приложение для MS-DOS и при этом использовать Windows только для создания какой-нибудь графики. Если вы собираетесь использовать любую часть Windows, то вынуждены смириться с необходимостью написания полнокровной программы для Windows.

Смысл этого станет более понятен после того, как вы больше узнаете о структуре программ для Windows. В Windows все взаимосвязано. Если вы захотите переместить на дисплее какую-нибудь графическую картинку, то вам нужно получить соответствующий "описатель контекста устройства". Чтобы это сделать, вам нужен "описатель окна". А для этого вы должны создать окно и подготовиться к получению "сообщений" для окна. Чтобы получить и обработать сообщение, необходима "процедура окна". Таким образом пишется программа для Windows. Не оторвавшись от земли нельзя взлететь.

20

Вызовы функций

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

Каждая функция Windows имеет развернутое имя, написанное буквами как верхнего, так и нижнего регистров, например CreateWindow. Эта функция (как вы могли бы догадаться) создает для вашей программы окно. Другой пример: функция IsClipboardFormatAvailable определяет, хранятся ли в буфере обмена данные специального формата.

Все основные функции Windows объявляются в заголовочных файлах. Главный заголовочный файл называется WINDOWS.H, и в этом файле содержится множество ссылок на другие заголовочные файлы. Эти заголовочные файлы имеются в любой среде программирования, поддерживающей Windows 95 и основанной на использовании языка С. Заголовочные файлы являются важной частью технической документации для Windows. Вы можете распечатать копии заголовочных файлов или для скорости воспользоваться программой просмотра файлов.

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

Когда вы запускаете программу в Windows, она взаимодействует с Windows через процесс, называемый "динамическим связыванием". EXE-файлы Windows содержат ссылки на различные динамически подключаемые библиотеки, функции которых в них используются. Большая часть этих библиотек DLL расположено в подкаталоге SYSTEM вашего каталога Windows. Когда программа для Windows загружается в оперативную память, вызовы в программе настраиваются на точки входа функций в динамически подключаемых библиотеках, которые, если этого еще не произошло, тоже загружаются в оперативную память.

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

Объектно-ориентированное программирование

При программировании для Windows вы фактически занимаетесь одним из видов объектно-ориентированного программирования (Object Oriented Programming, OOP). Это наиболее очевидно для объекта, с которым вы в Windows будете большей частью работать, объекта, который дал Windows ее название, объекта, который, как кажется, вскоре приобретет человеческие свойства, объекта, который, быть может, даже будет вам мерещиться, объекта, который известен как "окно".

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

Окно приложения обычно содержит заголовок (title bar), меню (menu), рамку (sizing border) и иногда полосы прокрутки (scroll bars). Окна диалога — это дополнительные окна. Больше того, в окне диалога всегда имеется еще несколько окон, называемых "дочерними" (child windows). Эти дочерние окна имеют вид кнопок (push buttons), переключателей (radio buttons), флажков (check boxes), полей текстового ввода или редактирования (text entry fields),

списков (list boxes) и полос прокрутки (scroll bars).

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

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

Windows.

Архитектура, управляемая событиями

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

Соседние файлы в предмете Операционные системы