Программирование под Win32


Программирование для Windows с помощью библиотеки объектов OWL - стр. 5


Образовав и выведя на экран главное окно приложения, функция Run() вызовом функции Message-LoopO входит в цикл обработки сообщений, в котором приложение и находится до своего завершения.

Для того, чтобы можно было изменять характеристики и свойства главного окна, надо создать собст­венный класс главного окна (в примере 25-1 ему дано произвольное имя MyWindow), производный от библиотечного класса TFrameWindow. Класс TFrameWindow сам является производным от класса TWin­dow, и, таким образом, эти три класса образуют иерархическую структуру, показанную на рис. 25.4.

Класс TWindow является родоначальником ряда классов, описывающих функционирование разного рода окон (диалогов, органов управления и других), которые, естественно, наследуют возможности своего базового класса TWindow. Среди этих про­изводных классов есть и класс окон с рамками TFrameWindow.

В класс TWindow входит большое число (около 300!) функ­ций-членов, обеспечивающих общие черты поведения окон, на­значение многих из которых нам знакомо по части II этой кни­ги: Create(), ShowWindow(), MoveWindow(), GetClientRect(), In-validate(), SendMessage(), SetBkgndColor(), SetWindowWord() и т. д. В примере 25-1 использовалась функция SetBkgndColor(), устанавливающая цвет фона окна.

Помимо функций, в класс TWindow входит ряд данных-членов, из которых нас пока будет интересо­вать только структура типа TWindowAttr, которая представлена в классе TWindow данным-членом Attr. Элементы этой структуры определяют атрибуты окна, устанавливаемые во время его создания: стиль, координаты, размеры и др. В примере 25-1 с помощью элементов этой структуры устанавливаются коор­динаты и размеры окна.


Простейшее OWL-приложение Windows                                                                               225

Создав в программе производный от TApplication класс МуАрр, мы получили возможность переоп­ределить в нем функцию класса TApplication InitMainWindow(). Зачем это нужно? Как видно из рис. 25.3, в этой функции вызовом функции SetMainWindow() создается безымянный экземпляр класса TFrameWindow, к которому и обратиться-то нельзя. Нам нужно заменить его экземпляром производного от него класса My Window, с функциями и данными которого мы сможем работать. В замещенной функ­ции InitMainWindow() выполняется в сущности то же, что было предусмотрено в исходной функции, но в нужном нам варианте:




Начало  Назад  Вперед