Программирование >>  Программирование на языке c++ 

1 ... 112 113 114 [ 115 ] 116 117 118 ... 159


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 и значения аргумен-



1 ... 112 113 114 [ 115 ] 116 117 118 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика