В данной главе содержится обзор программирования для
Microsoft Windows с использованием Borland Pascal (с акцентом на
объектно-ориентированное программирование). В представленном
здесь примере используется поставляемая с Borland Pascal библио-
тека ObjectWindows. Вы узнаете о поведении прикладной программы
Windows и о том, как с помощью ObjectWindows автоматизировать од-
ни задачи и упростить другие.
Чтобы извлечь из данной главы максимум пользы, вы должны по-
нимать принципы объектно-ориентированного программирования. Если
вы не знакомы с объектно-ориентированным программированием, про-
читайте Главу 9 "Объектно-ориентированное программирование". Вы
должны также знать, как работать с Windows.
На Рис. 10.1 показаны основные компоненты приложения
Windows. Чтобы понять обсуждаемые темы, вам должны быть знакомы
эти компоненты, и вы должны уметь с ними работать.
Кнопка минимизации
Кнопка максимизации і
Строка заголовка і і
Командная кнопка і і і
управления меню Строка меню і Вертикальная полоса і і
і і і прокрутки і і і
ЬЬіЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬіЬЬЬЬЬЬЬЬЬЬЬЬіЬЬЬЬЬЬЬЬЬЬЬЬЬіЬЬЬЬЬЬЬЬЬЬЬЬіЬіЬЬ
ЫЙі[]НННННННННННННіННННННННННННіНННННННННННННіННННННННННННіНі»Ы
Ыє±=± і Borland
Pascal і і^іvєЫ
ЫєДДДДДДДДДДДДДДДДДіДіДДДДДДДДДДДБДБДєЫ
Ыє File Edit
Search Run Compile Tools Options іindows Help єЫ
ЫєДДДДДДДДДДДДДДДДДДДіДДДДДДДДДДДДДДДєЫ
ЫєЙНННННННННННННННННННННННННННННННННННННННННННі» єЫ
Ыєє±=± c:\bpw\helloapp.pas і^ііє ЫєєДДДДДДДДДДДДДДДБДБіє єЫ
Ыєє program
Hello; ^є єЫ
Ыєє ±є єЫ
Ыєє uses
WObjects, WinTypes, WinProcs; ±є єЫ
Ыєє ±є єЫ
Ыєє type ±є єЫ
Ыєє Ьє єЫ
Ыєє { Define a
TApplications descendant } ±є єЫ
Ыєє THelloApp
= object(TApplication) ±є єЫ
Ыєє procedure InitMaЙНННННННННННННННННННННННННННННННН» єЫ
Ыєє end; і єЫ=ЫЫЫЫЫЫGo to Line
NumberЫЫЫЫЫЫЫє Ыєє<±Ы±±±±±±±±±±±±±±±і±±±є є єЫ
ЫєИННННННННіНННННННННіНННє
±±Enter new line number±ЫЫЫЫЫ Ыє і і є є єЫ
Ыє і і є є єЫ
Ыє і і є ЪДДДДДДДДїЪДДДДДДДДїЪДДДДДДДДї Ыє і і є іы Ыє і і є АДДДіДДДДЩАДДДДДДДДЩАДДДДДДДДЩ Ыє і і є і і є єЫ
Ыє і і ИНННННіНННННННННННННННіННННННННННј єЫ
Ыє±±±1:1±±±і±±Insert±і±±±±±±±±±і±±±±±±±±±±±±±±±і±±±±±±±±±±±±±±єЫ
ЫИНННННННННіНННННННННіНННННННННіНННННННННННННННіННННННННННННННјЫ
ЫЫЫЫЫЫЫЫЫЫЫіЫЫЫЫЫЫЫЫЫіЫЫЫЫЫЫЫЫЫіЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫіЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
і
і Окно Управляющий
Диалоговое окно
Горизонтальная элемент
полоса прокрутки
Рис. 10.1 Выводимые на экран
компоненты приложения Windows.
Приложение Windows - это
специальный тип программы PC, кото-
рая - должна иметь специальный
выполняемый формат файла (.EXE);
- работать только с Windows;
- обычно работать в прямоугольном
окне на экране;
- при выводе на экран следовать
рекомендациям по стандартно-
му интерфейсу с пользователем;
- может работать одновременно с другими программами Windows
и прочими программами, включая
другие экземпляры самое се-
бя;
- может взаимодействовать и совместно использовать данные с
другими приложениями Windows.
Как для пользователей, так и для
разработчиков Windows пред-
лагает множество преимуществ, которые
включают в себя:
* Стандартные и предсказуемые
операторы: если вы знаете, как
использовать одно приложение
Windows, то сможете работать
со всеми остальными.
* Для каждого приложения
нет необходимости устанавливать
драйверы устройств и устройства: в Windows предусмотрены
драйверы для поддержки
периферийной аппаратуры.
* Межпрограммное взаимодействие и
связь.
* Многозадачность: возможность одновременно запускать мно-
жество программ.
* Доступ к большему объему
памяти: Windows поддерживает за-
щищенный режим.
Для разработчиков эти
преимущества включают в себя:
* Независимую от устройств
графику, благодаря чему графичес-
кие приложения могут работать
на всех стандартных дисплей-
ных адаптерах.
* Непосредственную поддержку
широкого диапазона принтеров,
мониторов и устройств типа
"мышь".
* Богатую библиотеку графических
подпрограмм.
* Больше памяти для больших
программ.
* Поддержку меню, пиктограмм,
битовых массивов и др.
Обратной стороной ряда
предлагаемых Windows пользователю
преимуществ является перечень
более строгих аппаратных требова-
ний. В общем случае Windows требует
для производительности, срав-
нимой с приложением DOS лучших графических средств, больших объ-
емов памяти, более быстрых
процессоров. Если вы располагаете про-
цессором 80286 или
старше и не менее 2 мегабайтами
памяти, то
Windows будет прекрасно работать.
Для разработчиков прикладных
программ Windows предусматрива-
ет широкий диапазон программных
средств.
Windows основана на
архитектуре с управлением по событиям.
Это означает, что весь ввод от пользователя
интерпретируется как
события. Когда событием является щелчок кнопкой
"мыши" или нажа-
тие клавиши клавиатуры, то происходит событие, и Windows генери-
рует сообщение. Например, если
пользователь щелкает левой кнопкой
"мыши", Windows генерирует
сообщение wm_LButtonDown. Если пользо-
ватель нажимает клавишу, Windows
генерирует событие wm_KeyDown.
При выборе "мышью" или с помощью клавиатуры
Windows интерп-
ретирует все команды меню и управляющие
команды как сообщения
wm_Command. Эта архитектура с
управлением по событиям отлично со-
гласуется с объектно-ориентированным
подходом Borland Pascal.
Windows унифицирует процесс
вывода на экран и печать в одном
модуле, который называется интерфейсом
с графическими устройства-
ми (GDI) и который обеспечивает общий интерфейс для каждой прог-
раммы Windows. Кроме того, в Windows предусмотрены драйверы
уст-
ройств для большинства стандартных графических адаптеров и прин-
теров. В результате система позволяет
вам писать одно приложение,
которое без изменений работает на
большинстве существующих в мире
аппаратных средствах.
Графика, независимая от
устройств, предлагает некоторые пре-
имущества, которые не бросаются в
глаза сразу. Одним из них явля-
ется то, что приложения Windows легкоустанавливаемы, так как не
требуют переконфигурации
системы с конкретными драйверами
уст-
ройств. Другое состоит в том, что приложения Windows часто лучше
работают в локальной сети, поскольку каждый пользователь имеет
свою собственную локальную
конфигурацию.
Но графика, независимая от устройств, требует
жертв. Для
разработчика эти "жертвы" состоят в соблюдении в чем-то строгих
требований GDI. GDI ограничивает возможности программиста в
про-
ектировании приложений.
Windows позволяет пользователям
выполнять несколько приложе-
ний параллельно, устраняя
необходимость использования резидентных
в памяти программ (TSR). В Windows
реализована не просто многоза-
дачность. Она поддержана набором
средств и межпроцессорных комму-
никаций, таких как буфер вырезанного
изображения Clipboard и ди-
намический обмен данными (DDE).
Windows управляет множеством
приложений, ограничивая исполь-
зование экрана каждым приложением
одной или более прямоугольной
областью, которые называются окнами.
Эти окна можно перемещать,
изменять их размер и временно
сворачивать в пиктограммы, позволяя
пользователю быстро переключаться от
одной задачи к другой.
С точки зрения программиста это означает, что программа не
должна записывать текст или графику непосредственно по экранным
адресам, а должна выводить их в
пользовательскую область окна -
область внутри рамки окна. Аналогично,
прикладная программа долж-
на использовать память компьютера
совместно с другими приложения-
ми. Хорошо построенное приложение
Windows корректно соблюдает
правила Windows работы с экраном и
управления памятью.
В типичном сеансе работы с
Windows множество приложений мно-
гократно открываются и
закрываются, поэтому нерационально
загру-
жать каждое приложение в память после
предыдущего - Windows скоро
исчерпает память. Вместо этого Windows, чтобы удовлетворить
пот-
ребности других приложений или
самой Windows, может
перемещать
память большинства приложений в другую
часть памяти или на диск.
Таким образом, приложение Windows
должно соответствовать ди-
намическому распределению памяти
Windows и избегать прямого обра-
щения к адресам памяти. Например,
традиционный указатель на ячей-
ку памяти может быстро стать
недопустимым, когда Windows
пере-
распределит память, так как может
указывать на ячейку памяти, ко-
торая используется для чего-то еще.
Вместо указателей Windows
использует описатели, которые по
существу представляют собой указатели на указатели. Описатели -
это номера, использующиеся в качестве индексов в обслуживаемой
Windows таблице указателей.
Таким образом, приложения Windows
ссылаются на окно или содержимое
экрана (область для отображения
на экране) по описателю. Имеются также
указатели экземпляров при-
ложений, строк, средств отображения и ресурсов, таких как
меню и
пиктограммы.
При обычной работе
вам не потребуется иметь дело с
самими
описателями. Вы можете выделять и
освобождать память в динамичес-
ки распределяемой области
с помощью обычных
подпрограмм New,
вать с Windows и обеспечивать
для нее информацию о том, на что
фактически ссылаются эти указатели.
Одним из основных преимуществ
управления памятью в Windows
является возможность совместно
использовать в приложениях скомпи-
лированный код. Например, если
пользователь выполняет два экземп-
ляра одного и того же
приложения, то эти приложения
используют
один и тот же скомпилированный код в
памяти. Аналогично, приложе-
ние может динамически загружать
библиотечный модуль, совместно
используемый в нескольких прикладных
программах. Это называется
динамически компонуемой библиотекой -
DLL.
Ресурсы представляют собой описания устройств пользователь-
ского интерфейса приложения
Windows: его меню, диалоговых окон,
курсоров, пиктограмм, битовые массивы, строки и командные клави-
ши. Windows обеспечивает средства для
поддержки этих описаний вне
исходного кода приложения. Ресурсы приложения объединяются с его
выполняемым файлом перед выполнением
приложения. Чтобы ограничить
использование памяти, приложение
вызывает ресурсы в память только
когда они необходимы.
Отделение спецификаций ресурса
от исходного кода имеет до-
полнительное преимущество: вы можете изменить вид приложения, не
затрагивая исходного кода
программы. Фактически, для модификации
ресурсов приложения вам не нужно даже
иметь исходный код. Это об-
легчает настройку или трансляцию
существующих приложений Windows.
Для создания и настройки ресурсов Borland Pascal включает
в
себя пакет разработчика ресурсов
Resourse Workshop.
Windows позволяет приложениям, включая программы Borland
Pascal, загружать и освобождать
библиотечные модули на этапе ком-
поновки. Эти модули должны быть записаны в специальном выполняе-
мом формате (EXE), который
называется динамически компонуемой
библиотекой (DLL). Часто
эти библиотеки выполняют специальные и
сложные задачи, такие как преобразование форматов файлов. В
этом
случае программа может
применять DLL как фильтры для экспорта и
импорта файлов. Кроме того,
DLL могут совместно
использоваться
группой приложений, что способствует совместному использованию и
экономии памяти.
Буфер вырезанного изображения Clipboard позволяет пользова-
телям передавать информацию, такую как текст, графику и данные,
между приложениями, между различными
частями приложения или в ка-
честве временной памяти для
последующего использования. Например,
программа обработки текста
может использовать буфер вырезанного
отображения для операций удаления,
копирования и вставки текста.
Динамический обмен данными (DDE)
- это еще один механизм пе-
редачи информации. В то время как буфер вырезанного изображения
полностью находится под
контролем пользователя, DDE выполняет
"закулисную" работу под
управлением программы. Посылая
DDE-сооб-
щения, программа передает информацию
другой программе.
Множественный документальный
интерфейс (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; ^є єЫ
Ыєє ±є єЫ
Ыєє Ыєє ±є єЫ
Ыєє type ±є єЫ
Ыєє Ьє єЫ
Ыєє { Define a
TApplications descendant } ±є єЫ
Ыєє THelloApp
= object(TApplication) ±є єЫ
Ыєє procedure InitMainWindow; virtual; vє єЫ
Ыєє<±Ы±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±>±є єЫ
ЫєИННННННННННННННННННННННННННННННННННННННННННННј єЫ
Ыє єЫ
Ыє єЫ
Ыє єЫ
Ыє±±±1:1±±±±±±Insert±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±єЫ
ЫИНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННјЫ
ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
Рис. 10.2 Окна IDE для Windows
Borland Pascal - приложение MDI.
Благодаря схеме управления
данными Windows и ее подобию язы-
ку программирования Си, программированию для Windows с
помощью
Borland Pascal способствуют некоторые
специализированные типы
данных. Например, описатель окна сохраняется под типом
HWnd.
Borland Pascal и ObjectWindows
определяют новые типы, содействую-
щие работе с таким типом как HWnd. Все
эти новые типы и структуры
данных описаны в "Руководстве по
программированию с использовани-
ем ObjectWindows".
Как можно видеть, программирование
в многооконной среде тре-
бует знания многих событий, форматов, описателей и других прило-
жений, поэтому разработка программы
Windows может показаться
трудной задачей. К счастью,
объектно-ориентированное программиро-
вание
упрощает задачу программирования
для многооконной среды и
позволяет разработчику прикладной программы
сосредоточиться на
функциях приложения, а не на его форме. Используя объекты для
представления таких сложных структур
как окна, программы Borland
Pascal могут
инкапсулировать свои операции и хранение данных.
Этой цели служит ObjectWindows.
Объектно-ориентированное
программирование обеспечивает ту
основу, в рамках которой
программист может использовать объекты
для представления элементов интерфейса
с пользователем программы
Windows. Это означает, что окно
является объектом.
Окно ObjectWindows объектные типы прикладной программы под-
держивают требуемую от программы Windows работу с сообщениями,
значительно упрощая взаимодействие программиста с пользователем.
Фактически, объекты ObjectWindows
представляют не только
окна,
они представляют диалоговые блоки и управляющие
элементы, такие
как блоки списка и командные кнопки.
ObjectWindows использует
объектно-ориентированные расширения
Borland Pascal для инкапсуляции
прикладного программного интер-
фейса Windows (API), скрывая от вас детали программирования для
Windows. В результате вы можете
использовать IDE для
Windows
Borland Pascal для написания программ
Windows, затрачивая сущест-
венно меньше времени и усилий, чем это потребовалось бы при не-
объектно-ориентированном
программировании. ObjectWindows предус-
матривает три полезных средства: инкапсуляцию информации окна,
абстракцию функций API Windows и автоматический ответ на сообще-
ния Хотя библиотека ObjectWindows
определяет объекты для окон,
диалоговых окон и
управляющих элементов, она
предусматривает
только поведение объектов, их атрибуты и типы данных. Физической
реализацией, визуальным отображением
элемента на экране, управля-
ет сама Windows. Таким образом,
объекты ObjectWindows, которые мы
называем интерфейсными объектами,
взаимодействуют с соответствую-
щими визуальными элементами, которые мы
называет интерфейсными
элементами. Успешное управление взаимодействием объект/элемент -
это ключ к успешному программированию
в Windows с использованием
ObjectWindows.
Взаимодействие объект/элемент
осуществляется через описатель
окна. Когда вы строите интерфейсный
объект, одной из его функций
является указание Windows
на создание интерфейсного элемента.
Windows возвращает идентифицирующий
этот элемент описатель, кото-
рый объект сохраняет в поле
с именем HWindow. Многие функции
Windows воспринимают описатель окна в
качестве параметра, поэтому
сохранение его в поле поддерживает готовность доступа к
оконному
объекту. Аналогично, поля интерфейсного объекта можно использо-
вать для сохранения информации о
средствах отображения или инфор-
мации о состоянии конкретного окна.
Приложения Windows управляют
своим видом и поведением путем
вызова функций Windows - набора почти
из 600 функций, образующий
интерфейс с прикладной программой
Windows (API). Каждая функция
воспринимает разнообразные параметры
различных типов, которые мо-
гут быть достаточно запутанными. Хотя
из Borland Pascal вы можете
непосредственно вызывать любую функцию
рощает задачу, предлагая объектные
методы, абстрагирующие функци-
ональные вызовы.
Как отмечалось выше,
многие из параметров
для функций
Windows уже записаны в полях
интерфейсных объектов. Таким обра-
зом, методы могут использовать эти
данные для подстановки пара-
метров для функций Windows. Кроме того, ObjectWindows группирует
родственные функциональные вызовы
в отдельных методах, которые
выполняют задачи более высокого
уровня. Результатом является уп-
рощенный и простой в использовании
интерфейс API, улучшающий су-
ществующий API Windows.
Хотя такой подход существенно
уменьшает вашу зависимость от
сотен функций API Windows, он не запрещает вам вызывать API не-
посредственно. ObjectWindows
предлагает лучшее из обоих
"миров":
объектно-ориентированную разработку
высокого уровня, плюс макси-
мальное управление графической
операционной средой.
Кроме сообщения операционной
среде Windows, что надо что-то
сделать, большинство приложений
должны иметь возможность отвечать
на сотни сообщений Windows, являющихся
результатом действий поль-
зователя (например, щелчка кнопкой
"мыши"), других приложений или
прочих источников. Корректная обработка сообщений и ответ на
них
является решающим для правильной
работы вашей программы. Кроме
того,
ваша программа должна как-то отвечать на выбор меню, и в
ответ на конкретное сообщение
реализовать это не трудно. Но напи-
сание программы, которая знает как отвечать почти на 200
различ-
ных
сообщений Windows, также затруднительно, как вызов нужных
функции Windows.
Объекты с их предопределенным
поведением (методами) прекрас-
но подходят для задачи ответа на
внешние воздействия (сообщения
Windows). ObjectWindows превращает
сообщения Windows в вызовы ме-
тодов просто определяете метод для ответа на
каждое сообщение, которое
вам нужно обрабатывать в
программе. Например, когда пользователь
щелкает левой кнопкой
"мыши", Windows генерирует сообщение
wm_LButtonDown. Если вы хотите,
чтобы окно или управляющий эле-
мент в вашей программе реагировали на
такие нажатия кнопки "мы-
ши", нужно определить метод
WMLButtonDown, настроенный на сообще-
ние ваш объект автоматически вызывает
определенный вами метод.
Такие методы называются
методами ответа на сообщение.
Без
объектно-ориентированного программирования и
ObjectWindows вам
пришлось бы написать длинный оператор
case для каждого окна и уп-
равлять поступлением этого сообщения,
отсортировывать вид сообще-
ния и наконец, решать,
что с ним делать. ObjectWindows берет на
себя все эти функции.
При наличии такого
множества взаимодействующих элементов
программного обеспечения как DOS, Windows и прикладные программы
полезно знать о том, какие части ваших
приложений Windows взаимо-
действуют с окружающей их программной
средой. В данном разделе
исследуется структура типичных приложений Windows, написанных в
На этапе выполнения функциональные возможности Windows и ее
API сосредоточены в трех библиотечных
модулях, вызываемых работа-
ющими в данный момент приложениями.
Это следующие модули Windows:
* KERNEL.EXE -
управляет распределением памяти и ресурсов,
выполняет планирование и
взаимодействие с DOS.
* GDI.EXE - выводит на экран и на
принтер графику.
* USER.EXE - работает с окнами,
вводом данных от пользовате-
ля и коммуникациями.
Эти модули являются
компонентами
распространяемой версии
Windows, поэтому пользователи Windows
могут найти их на своих
дисках. Поставляемые программы используют эти библиотечные моду-
ли; он не включают их.
Из-за ограниченного масштаба операционной системы DOS легко
предвидеть, как будет влиять DOS
на успешное выполнение
ваших
прикладных программ. Тем
не менее, программа для DOS работает
благодаря взаимодействию между вашей
программой и средствами опе-
рационной системы.
Аналогичное правило действует
для программы Windows. Пос-
кольку Windows предлагает значительно
большее число функциональ-
ных вызовов операционной системы, взаимодействие между Windows и
вашей программой отследить значительно
труднее. Например, чтобы
вывести графику на экран,
ваша программа должна вызвать функцию
GDI Windows. Для реакции на нажатие пользователем кнопки "мыши"
программа должна определять метод реакции (ответа) на сообщение.
Ваша программа должна непрерывно
взаимодействовать с операционной
системой Традиционным введением в новый
язык программирования или
операционную среду является
программа, выводящая сообщение
"Hello, Word!", написанная на данном языке или для данной
опера-
ционной среды. Это программа содержит
количество программного ко-
да, достаточное для вывода на экран
строки "Hello, Word!".
Конечно, в Windows нужно сделать
значительно больше. Вам
нужно вывести окно,
записать в него текст и сделать так,
чтобы
окно взаимодействовало с
"окружающим миром", по
крайней мере вы
должны иметь возможность закрыть окно
и выйти. Если вы будете де-
лать все это с самых основ, то даже для выполнения этих элемен-
тарных задач потребуется очень большой
объем кода. Например,
программа GENERIC.PAS, содержащаяся на
дистрибутивных дисках, вы-
полняя такие элементарные действия,
занимает более 100 строк.
Это связано с
тем, что предъявляет к
прикладной программе
ряд требований, которые та должна удовлетворять перед тем,
как
она сможет работать в Windows. Даже простейшая программа требует
большого объема исходного кода. К счастью, программы, написанные
с использованием ObjectWindows, автоматически удовлетворяют этим
требованиям (включая создание и вывод
на экран основного окна и
сохранение для приложения описателя
окна). Таким образом, прог-
рамма "Hello, Word!"
сокращается всего до 16 строк.
uses WObjects;
type
THelloWord = object(TApplication)
procedure InitMainWindow; virtual;
end;
procedure THelloWord.InitMainWindow;
begin
MainWindow := New(PWindow,
Init(nil, 'Hello, Borland
Pascal'));
end;
var HelloWord: THelloWord;
begin
HelloWord.Init('HelloWord');
HelloWord.Run;
HelloWord.Done;
end.
При запуске программа ObjectWindows должна сначала
получить
от Windows четыре значения и
сохранить их в соответствующих гло-
бальных переменных. (Это происходит автоматически, но если бы вы
писали программу, не используя ObjectWindows, то пришлось бы об
этом позаботиться.)
* В HInstance сохраняется
описатель экземпляра программы.
* В HPrevInst
сохраняется описатель последнего
экземпляра
той же прикладной программы.
* В CmdShow записывается целое
значение, представляющее на-
чальный режим вывода основного
окна. Оно используется для
вызова метода Show.
* В CmdLine записывается
командная строка вызова прикладной
программы, включая параметры
и имя файла, например
Как приложение ObjectWindows, программа HelloApp должна
строить и инициализировать объект
основного окна. Она может ини-
циализировать только первый экземпляр
HelloApp с помощью метода
InitApplication, либо инициализировать каждый экземпляр HelloApp
с помощью метода InitInstance.
HelloApp начинает цикл
сообщения, вызывая метод Run. Нако-
нец, она завершается путем освобождения объекта прикладной прог-
раммы с помощью метода Done.
Основное окно прикладной
программы - это окно первоначально-
го вывода прикладной программы при
ее запуске. Оно отвечает за
представления пользователю списка доступных
команд (меню). Во
время сеанса работы с прикладной программой основное окно управ-
ляет интерфейсом прикладной программы
и во многих случаях являет-
ся единственной рабочей областью
программы, создавая, когда это
требуется, диалоговые окна. Другие,
более сложные приложения, мо-
гут использовать в качестве рабочих
областей несколько окон. Ког-
да пользователь закрывает основное
окно, он инициализирует про-
цесс закрытия прикладной программы.
Из-за наличия определенных
требований ко многим прикладным
программам Windows (например,
инициализация основного окна) вам
будет легче всего начать писать
программу, используя существующее
приложение Windows и
приспосабливая его для
своих нужд. В
ObjectWindows вы можете найти много
примеров программ. Выберите
для своего приложения наиболее
подходящую.
Используя в Windows
интегрированную интерактивную среду раз-
работки программ, вы значительно
сократите время разработки. Бла-
годаря многозадачным возможностям Windows, вы можете
запустить
IDE, Resource Workshop и свою
прикладную программу одновременно.
Поставляемые с Borland Pascal for
Windows инструментальные средс-
тва не только облегчают каждую задачу,
но и сокращают число задач
при разработке приложения Windows. По
существу, это процесс можно
сократить до следующих нескольких
шагов:
1. Создание исходного кода
программы и включение в программу
имен файлов ресурсов, которые
будут использоваться по ди-
рективе {$R имя_файла}.
2. Создание ресурсов для
диалоговых окон, меню и т.д.
3. Компиляция программы.
4. Интерактивная отладка
программы.
Теперь, когда вы поняли основы программирования в Windows
и
имеете начальные сведения об
ObjectWindows, можете начинать прог-
раммировать. Начните с чтения "Руководства по
программированию с
использованием ObjectWindows" и
шаг за шагом изучите, как разра-
батывать приложение ObjectWindows.