В данной  главе содержится   обзор   программирования   для  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:pwhelloapp.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±ЫЫЫЫЫ   єЫ 

  Ыє   і   і   є  є   єЫ 

  Ыє   і   і   є  є   єЫ 

  Ыє   і   і   є ЪДДДДДДДДїЪДДДДДДДДїЪДДДДДДДДї є   єЫ 

  Ыє   і   і   є іы  OK   ііX Cancelіі?  Help і є   єЫ 

  Ыє   і   і   є АДДДіДДДДЩАДДДДДДДДЩАДДДДДДДДЩ є   єЫ 

  Ыє   і   і   є  і   і є   єЫ 

  Ыє   і   і   ИНННННіНННННННННННННННіННННННННННј   єЫ 

  Ыє±±±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,  Dispose, GetMem иFreeMem,  а Borland Pascal будет взаимодействовать с  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:pwhelloapp.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.

Благодаря схеме управления данными 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, ObjectWindows упрощает задачу, предлагая объектные методы, абстрагирующие функциональные вызовы.

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

Хотя такой подход существенно уменьшает вашу зависимость  от  сотен функций  API Windows,  он не запрещает вам вызывать API непосредственно. ObjectWindows предлагает лучшее из обоих "миров":  объектно-ориентированную разработку высокого уровня,  плюс максимальное управление графической операционной средой.

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

Объекты с их предопределенным поведением (методами) прекрасно подходят  для  задачи ответа на внешние воздействия (сообщения  Windows). ObjectWindows превращает сообщения Windows в вызовы методов Borland Pascal.  Таким образом,  с помощью ObjectWindows вы  просто определяете метод для ответа на каждое сообщение,  которое  вам нужно обрабатывать в программе.  Например, когда пользователь  щелкает левой  кнопкой "мыши",  Windows   генерирует   сообщение  wm_LButtonDown. Если  вы хотите, чтобы окно или управляющий элемент в вашей программе реагировали на такие нажатия  кнопки  "мыши", нужно определить метод WMLButtonDown, настроенный на сообщение wm_LButtonDown.  Затем, когда Windows посылает это сообщение,  ваш объект автоматически вызывает определенный вами метод.

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

При наличии  такого множества  взаимодействующих  элементов  программного обеспечения как DOS,  Windows и прикладные программы  полезно знать о том, какие части ваших приложений Windows взаимодействуют с окружающей их программной средой.  В  данном  разделе  исследуется структура  типичных приложений Windows,  написанных в  Borland Pascal with Objects.

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

* KERNEL.EXE  - управляет распределением памяти и ресурсов,   выполняет планирование и взаимодействие с DOS.

* GDI.EXE - выводит на экран и на принтер графику.

* USER.EXE - работает с окнами, вводом данных от пользователя и коммуникациями.

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

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

Аналогичное правило  действует для программы Windows.  Поскольку Windows предлагает значительно большее число  функциональных вызовов операционной системы,  взаимодействие между Windows и  вашей программой отследить значительно труднее.  Например,  чтобы вывести графику  на экран, ваша программа должна вызвать функцию GDI Windows.  Для реакции на нажатие пользователем кнопки  "мыши"  программа  должна определять метод реакции (ответа) на сообщение.  Ваша программа должна непрерывно взаимодействовать с операционной  системой (DOS + Windows).

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

Конечно, в Windows нужно  сделать значительно  больше.  Вам  нужно вывести  окно, записать в него текст и сделать так, чтобы  окно взаимодействовало с "окружающим миром",  по крайней мере  вы  должны иметь возможность закрыть окно и выйти. Если вы будете делать все это с самых основ,  то даже для выполнения этих  элементарных задач  потребуется  очень  большой объем кода.  Например,  программа GENERIC.PAS, содержащаяся на дистрибутивных дисках, выполняя такие элементарные действия, занимает более 100 строк.

Это связано  с тем,  что предъявляет к прикладной программе  ряд требований,  которые та должна удовлетворять перед  тем, как  она сможет работать в Windows.  Даже простейшая программа требует  большого объема исходного кода.  К счастью, программы, написанные  с использованием ObjectWindows,  автоматически удовлетворяют этим  требованиям (включая создание и вывод на экран основного  окна  и  сохранение для приложения описателя окна).  Таким образом,  программа "Hello, Word!" сокращается всего до 16 строк.

program HelloApp;

 

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 записывается командная строка вызова  прикладной  программы, включая   параметры  и   имя  файла,  например  "CALC.EXE /M" или"WORDPROC.EXE LETTER1.DOC".

Как приложение  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.