|
Программирование >> Программирование на языке c++
TApplication my app; аргумент конструктора имеет значение, заданное по умолчанию TApplication my app(); опять аргумент задан по умолчанию TApplication my app( New); здесь аргумент имеет значение New Первые два способа практически идентичны (круглые скобки могут либо использоваться, либо нет). Если конструктор вызвать по третьему способу и не описывать явно объект ту арр, то нашу простейшую программу можно переписать так: #include <owl\applicat.h> int OwlMain(int argc,char* argv[]) { return TApplicationCNew ) .Run(); } Результаты выполнения этой программы показаны на рис. 9.3. Заметим, что построенное окно имеет все свойства окон системы WINDOWS, т. е. можно менять его размеры, перемещать, переключать, закрывать и т. п. 9.1.1. Этапы построения главного окна на экране дисплея Рассмотрим выражение, заданное в программе: return TApplicationCNew ) .Run(); Функция Run() выполняет некоторую последовательность действий, которые показаны на рис. 9.4. Рассмотрим эти действия более подробно. Функция Run() вызывает функцию TApplication::InitApplication при описании только первого объекта и, далее, функцию TApplication::InitInstance для всех Объектов (т. е. последняя функция будет вызвана всегда). Как и выше, выражение вида TApplication::InitInstance говорит о том, что компонент-функция Initlnstance принадлежит классу TApplication. Если в процессе инициализации нет ошибок, то функция Run() вызывает функцию TApplication:: MessageLoop. Поскольку функции Initlnstance и Message-Loop являются очень важными, рассмотрим их более подробно. Первая функция вызывает функции TApplication::InitMain-Window, TWindow::Create и TWindow::Show. InitMainWindow конструирует объект класса TFrameWindow. На рис. 9.5 (а, б) показано место классов TApplication и TFrameWindow в общей иерархии классов. В действительности каждое главное окно в системе WINDOWS имеет связанный с ним объект типа TFrameWindow или объект производного от TFrameWindow класса (рис. 9.5,6). В большинстве практических задач следует переопределить функцию InitMainWindow, чтобы иметь возможность построить такое окно, которое будет наиболее полно соответствовать задачам прикладной программы (другими словами, это позволяет создать специальное окно и описать новые функции для работы с этим окном). Функции TWindow::Create и TWindow::Sliow используются для построения и вывода окна на экран дисплея. Если в процессе создания окна возникает ошибка, то генерируется ис- TEvcntHandkr TStreamableBase Класс TApplJcalion позволяет использовать функции класса TModule и содержит дополнительные средства управления окнами, доступные на этапе выполнения программы TModule TApplication Класс TModule использует средства WINDOWS для инициализации н разрушения окон Класс TApplication наследует все функции класса TModule TEventHandler Получение дашшх от клавиатуры, обработка KOMaiut для окна пользователя и т. п. TMDIChild TDecoraledMDlFrame Рис. 9.5. Место класса TApplication (а) и классов для построения окон (б) в общей иерархии классов ObjectWindows Петля обработки сообщения Рис. 9.6. Обработка полученных от системы WINDOWS сообщений ключение (см. рис. 9.4). Эти функции принадлежат классу TWindow, который поддерживает всю основную работу с окнами. Функция MessageLoop постоянно активна в процессе выполнения прикладной программы. Рассмотрим основные идеи WINDOWS, которые являются определяющими для архитектуры этой системы: 1) система WINDOWS и прикладные программы взаимодействуют друг с другом. Взаимодействие осуществляется через сообщения. Предположим, что процедуры А и В являются компонентами некоторой программной системы. Когда мы говорим, что процедура А посылает сообщение процедуре В, то это означает, что процедура А вызывает подпрограмму в теле процедуры В. Каждое сообщение определяется именем вызываемой подпрограммы и аргументами, т. е. некоторыми значениями, которые должны быть переданы в вызываемую подпрограмму; 2) если прикладная программа хочет обратиться к системе WINDOWS, она посылает соответствующее сообщение, содержащее имя функции API и значения аргумен-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |