Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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



 

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

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

события. Когда событием является щелчок кнопкой "мыши" или нажа-

тие клавиши клавиатуры, то происходит событие, и Windows генери-

рует сообщение. Например, если пользователь щелкает левой кнопкой

"мыши", Windows генерирует сообщение wm_LButtonDown. Если пользо-

ватель нажимает клавишу, Windows генерирует событие wm_KeyDown.

 

При выборе "мышью" или с помощью клавиатуры Windows интерп-

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

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

гласуется с объектно-ориентированным подходом Borland Pascal.

 

 

Графика, независимая от устройств

─────────────────────────────────────────────────────────────────

 

Windows унифицирует процесс вывода на экран и печать в одном

модуле, который называется интерфейсом с графическими устройства-

ми (GDI) и который обеспечивает общий интерфейс для каждой прог-

раммы Windows. Кроме того, в Windows предусмотрены драйверы уст-

ройств для большинства стандартных графических адаптеров и прин-

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

которое без изменений работает на большинстве существующих в мире

аппаратных средствах.

 

Графика, независимая от устройств, предлагает некоторые пре-

имущества, которые не бросаются в глаза сразу. Одним из них явля-

ется то, что приложения Windows легкоустанавливаемы, так как не


 

B.Pascal 7 & Objects /UG - 246 -

 

требуют переконфигурации системы с конкретными драйверами уст-

ройств. Другое состоит в том, что приложения Windows часто лучше

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

свою собственную локальную конфигурацию.

 

Но графика, независимая от устройств, требует жертв. Для

разработчика эти "жертвы" состоят в соблюдении в чем-то строгих

требований GDI. GDI ограничивает возможности программиста в про-

ектировании приложений.

 

 

Многозадачность

─────────────────────────────────────────────────────────────────



 

Windows позволяет пользователям выполнять несколько приложе-

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

в памяти программ (TSR). В Windows реализована не просто многоза-

дачность. Она поддержана набором средств и межпроцессорных комму-

никаций, таких как буфер вырезанного изображения Clipboard и ди-

намический обмен данными (DDE).

 

Windows управляет множеством приложений, ограничивая исполь-

зование экрана каждым приложением одной или более прямоугольной

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

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

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

 

С точки зрения программиста это означает, что программа не

должна записывать текст или графику непосредственно по экранным

адресам, а должна выводить их в пользовательскую область окна -

область внутри рамки окна. Аналогично, прикладная программа долж-

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

ми. Хорошо построенное приложение Windows корректно соблюдает

правила Windows работы с экраном и управления памятью.

 

 

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

─────────────────────────────────────────────────────────────────

 

В типичном сеансе работы с Windows множество приложений мно-

гократно открываются и закрываются, поэтому нерационально загру-

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

исчерпает память. Вместо этого Windows, чтобы удовлетворить пот-

ребности других приложений или самой Windows, может перемещать

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

 

Таким образом, приложение Windows должно соответствовать ди-

намическому распределению памяти Windows и избегать прямого обра-

щения к адресам памяти. Например, традиционный указатель на ячей-

ку памяти может быстро стать недопустимым, когда Windows пере-

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

торая используется для чего-то еще.

 


 

B.Pascal 7 & Objects /UG - 247 -

 

Вместо указателей Windows использует описатели, которые по

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

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

Windows таблице указателей. Таким образом, приложения Windows

ссылаются на окно или содержимое экрана (область для отображения

на экране) по описателю. Имеются также указатели экземпляров при-

ложений, строк, средств отображения и ресурсов, таких как меню и

пиктограммы.

 

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

описателями. Вы можете выделять и освобождать память в динамичес-

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

Dispose, GetMem и FreeMem, а Borland Pascal будет взаимодейство-

вать с Windows и обеспечивать для нее информацию о том, на что

фактически ссылаются эти указатели.

 

Одним из основных преимуществ управления памятью в Windows

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

лированный код. Например, если пользователь выполняет два экземп-

ляра одного и того же приложения, то эти приложения используют

один и тот же скомпилированный код в памяти. Аналогично, приложе-

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

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

динамически компонуемой библиотекой - DLL.

 

Ресурсы

─────────────────────────────────────────────────────────────────

 

Ресурсы представляют собой описания устройств пользователь-

ского интерфейса приложения Windows: его меню, диалоговых окон,

курсоров, пиктограмм, битовые массивы, строки и командные клави-

ши. Windows обеспечивает средства для поддержки этих описаний вне

исходного кода приложения. Ресурсы приложения объединяются с его

выполняемым файлом перед выполнением приложения. Чтобы ограничить

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

когда они необходимы.

 

Отделение спецификаций ресурса от исходного кода имеет до-

полнительное преимущество: вы можете изменить вид приложения, не

затрагивая исходного кода программы. Фактически, для модификации

ресурсов приложения вам не нужно даже иметь исходный код. Это об-

легчает настройку или трансляцию существующих приложений Windows.

 

Для создания и настройки ресурсов Borland Pascal включает в

себя пакет разработчика ресурсов Resourse Workshop.

 

 

Динамическая компоновка

─────────────────────────────────────────────────────────────────

 

Windows позволяет приложениям, включая программы Borland

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

поновки. Эти модули должны быть записаны в специальном выполняе-


 

B.Pascal 7 & Objects /UG - 248 -

 

мом формате (EXE), который называется динамически компонуемой

библиотекой (DLL). Часто эти библиотеки выполняют специальные и

сложные задачи, такие как преобразование форматов файлов. В этом

случае программа может применять DLL как фильтры для экспорта и

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

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

экономии памяти.

 

 

Буфер вырезанного изображения

─────────────────────────────────────────────────────────────────

 

Буфер вырезанного изображения Clipboard позволяет пользова-

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

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

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

программа обработки текста может использовать буфер вырезанного

отображения для операций удаления, копирования и вставки текста.

 

 

Динамический обмен данными

─────────────────────────────────────────────────────────────────

 

Динамический обмен данными (DDE) - это еще один механизм пе-

редачи информации. В то время как буфер вырезанного изображения

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

"закулисную" работу под управлением программы. Посылая DDE-сооб-

щения, программа передает информацию другой программе.

 


 

B.Pascal 7 & Objects /UG - 249 -

 

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

─────────────────────────────────────────────────────────────────

 

Множественный документальный интерфейс (MDI) устанавливает

соглашения по пользовательскому интерфейсу для создания окон, со-

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

интегрированная интерактивная среда для Windows Borland Pascal. В

оперативной области Borland Pascal пользователь может открыть

сразу несколько окон. Каждое окно редактирования является дочер-

ним окном.

 

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

█╔═[]═════════════════════════════════════════════════════════╗█

█║▒=▒████████████████████Borland Pascal████████████████████│^│v║█

█║─────────────────────────────────────────────────────────┴─┴─║█

█║ File Edit Search Run Compile Tools Options Windows Help ║█

█║─────────────────────────────────────────────────────────────║█

█║╔════════════════════════════════════════════╗ ║█

█║║▒=▒ c:\bpw\helloapp.pas │^│v║ ║█

█║║────────────────────────────────────────┴─┴─║ ║█

█║║ program Hello; ^║ ║█

█║║ ▒║ ║█

█║║ uses WObjects, WinTypes, WinProcs; ▒║ ║█

█║║ ▒║ ║█

█║║ type ▒║ ║█

█║║ ▄║ ║█

█║║ { Define a TApplications descendant } ▒║ ║█

█║║ THelloApp = object(TApplication) ▒║ ║█

█║║ procedure InitMainWindow; virtual; v║ ║█

█║║<▒█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒>▒║ ║█

█║╚════════════════════════════════════════════╝ ║█

█║ ║█

█║ ║█

█║ ║█

█║▒▒▒1:1▒▒▒▒▒▒Insert▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║█

█╚═════════════════════════════════════════════════════════════╝█

█████████████████████████████████████████████████████████████████

 

Рис. 10.2 Окна IDE для Windows Borland Pascal - приложение

MDI.

 

 


 

B.Pascal 7 & Objects /UG - 250 -

 

Типы данных Windows

─────────────────────────────────────────────────────────────────

 

Благодаря схеме управления данными Windows и ее подобию язы-

ку программирования Си, программированию для Windows с помощью

Borland Pascal способствуют некоторые специализированные типы

данных. Например, описатель окна сохраняется под типом HWnd.

Borland Pascal и ObjectWindows определяют новые типы, содействую-

щие работе с таким типом как HWnd. Все эти новые типы и структуры

данных описаны в "Руководстве по программированию с использовани-

ем ObjectWindows".

 

 

Объектно-ориентированная работа с окнами

─────────────────────────────────────────────────────────────────

 

Как можно видеть, программирование в многооконной среде тре-

бует знания многих событий, форматов, описателей и других прило-

жений, поэтому разработка программы Windows может показаться

трудной задачей. К счастью, объектно-ориентированное программиро-

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

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

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

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

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

Этой цели служит ObjectWindows.

 

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

основу, в рамках которой программист может использовать объекты

для представления элементов интерфейса с пользователем программы

Windows. Это означает, что окно является объектом.

 

Окно ObjectWindows объектные типы прикладной программы под-

держивают требуемую от программы Windows работу с сообщениями,

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

Фактически, объекты ObjectWindows представляют не только окна,

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

как блоки списка и командные кнопки.

 

 

Лучший интерфейс с Windows

─────────────────────────────────────────────────────────────────

 

ObjectWindows использует объектно-ориентированные расширения

Borland Pascal для инкапсуляции прикладного программного интер-

фейса Windows (API), скрывая от вас детали программирования для

Windows. В результате вы можете использовать IDE для Windows

Borland Pascal для написания программ Windows, затрачивая сущест-

венно меньше времени и усилий, чем это потребовалось бы при не-

объектно-ориентированном программировании. ObjectWindows предус-

матривает три полезных средства: инкапсуляцию информации окна,

абстракцию функций API Windows и автоматический ответ на сообще-

ния.


 

B.Pascal 7 & Objects /UG - 251 -

 

Интерфейсные объекты

 

Хотя библиотека ObjectWindows определяет объекты для окон,

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

только поведение объектов, их атрибуты и типы данных. Физической

реализацией, визуальным отображением элемента на экране, управля-

ет сама Windows. Таким образом, объекты ObjectWindows, которые мы

называем интерфейсными объектами, взаимодействуют с соответствую-

щими визуальными элементами, которые мы называет интерфейсными

элементами. Успешное управление взаимодействием объект/элемент -

это ключ к успешному программированию в Windows с использованием

ObjectWindows.

 

Взаимодействие объект/элемент осуществляется через описатель

окна. Когда вы строите интерфейсный объект, одной из его функций

является указание Windows на создание интерфейсного элемента.

Windows возвращает идентифицирующий этот элемент описатель, кото-

рый объект сохраняет в поле с именем HWindow. Многие функции

Windows воспринимают описатель окна в качестве параметра, поэтому

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

объекту. Аналогично, поля интерфейсного объекта можно использо-

вать для сохранения информации о средствах отображения или инфор-

мации о состоянии конкретного окна.

 

Абстрагирование функций Windows

 

Приложения Windows управляют своим видом и поведением путем

вызова функций Windows - набора почти из 600 функций, образующий

интерфейс с прикладной программой Windows (API). Каждая функция

воспринимает разнообразные параметры различных типов, которые мо-

гут быть достаточно запутанными. Хотя из Borland Pascal вы можете

непосредственно вызывать любую функцию Windows, ObjectWindows уп-

рощает задачу, предлагая объектные методы, абстрагирующие функци-

ональные вызовы.

 

Как отмечалось выше, многие из параметров для функций

Windows уже записаны в полях интерфейсных объектов. Таким обра-

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

метров для функций Windows. Кроме того, ObjectWindows группирует

родственные функциональные вызовы в отдельных методах, которые

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

рощенный и простой в использовании интерфейс API, улучшающий су-

ществующий API Windows.

 

Хотя такой подход существенно уменьшает вашу зависимость от

сотен функций API Windows, он не запрещает вам вызывать API не-

посредственно. ObjectWindows предлагает лучшее из обоих "миров":

объектно-ориентированную разработку высокого уровня, плюс макси-

мальное управление графической операционной средой.

 

Автоматизация ответа на сообщения

 

Кроме сообщения операционной среде Windows, что надо что-то


 

B.Pascal 7 & Objects /UG - 252 -

 

сделать, большинство приложений должны иметь возможность отвечать

на сотни сообщений Windows, являющихся результатом действий поль-

зователя (например, щелчка кнопкой "мыши"), других приложений или

прочих источников. Корректная обработка сообщений и ответ на них

является решающим для правильной работы вашей программы. Кроме

того, ваша программа должна как-то отвечать на выбор меню, и в

ответ на конкретное сообщение реализовать это не трудно. Но напи-

сание программы, которая знает как отвечать почти на 200 различ-

ных сообщений Windows, также затруднительно, как вызов нужных

функции Windows.

 

Объекты с их предопределенным поведением (методами) прекрас-

но подходят для задачи ответа на внешние воздействия (сообщения

Windows). ObjectWindows превращает сообщения Windows в вызовы ме-

тодов Borland Pascal. Таким образом, с помощью ObjectWindows вы

просто определяете метод для ответа на каждое сообщение, которое

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

щелкает левой кнопкой "мыши", Windows генерирует сообщение

wm_LButtonDown. Если вы хотите, чтобы окно или управляющий эле-

мент в вашей программе реагировали на такие нажатия кнопки "мы-

ши", нужно определить метод WMLButtonDown, настроенный на сообще-

ние wm_LButtonDown. Затем, когда Windows посылает это сообщение,

ваш объект автоматически вызывает определенный вами метод.

 

Такие методы называются методами ответа на сообщение. Без

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

пришлось бы написать длинный оператор case для каждого окна и уп-

равлять поступлением этого сообщения, отсортировывать вид сообще-

ния и наконец, решать, что с ним делать. ObjectWindows берет на

себя все эти функции.

 


 

B.Pascal 7 & Objects /UG - 253 -

 

Структура программы Windows

─────────────────────────────────────────────────────────────────

 

При наличии такого множества взаимодействующих элементов

программного обеспечения как DOS, Windows и прикладные программы

полезно знать о том, какие части ваших приложений Windows взаимо-

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

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

Borland Pascal with Objects.

 


Дата добавления: 2015-09-30; просмотров: 29 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.047 сек.)







<== предыдущая лекция | следующая лекция ==>