726___________________________Часть V. Инструментарий программиста

void GraphicsApp::InitMainWindow() { MainWindow = new TMDIFramef

"Демонстрация графики GDI с помощью OWL 5.0", Menuld, *new DemoMDIWindow);

MainWindow->SetIcon(this, Iconid);

i

int OwlMain(int, char*[]) f • .

// Инициализация генератора случайных чисел

randomize();

// Запуск программы return GraphicsApp().Run();

l

В этом исходном файле есть несколько моментов, которые стоит отметить. Demo.cpp покажется знакомым всякому, кто имеет опыт написания даже простых программ с использованием OWL. Вездесущая функция OwiMain здесь просто инициализирует генератор случайных чисел и "запускает" конкретный объект класса GraphicApp. Главное окно класса DemoMDIWindow создается В методе InitMainWindow () класса GraphicApp.

Действительно интересное начинается внутри DemoMDIWindow. Класс DemoMDIWindow наследуется от класса TMDiciient — класса OWL, который отвечает за управление окнами-потомками в соответствии со стандартом многодокументного интерфейса (MDI). Если вы не знакомы с поддержкой MDI библиотекой OWL (или вообще с MDI), не расстраивайтесь. Использование MDI в Picdemo достаточно прозрачно, поэтому не нужно быть экспертом, чтобы проследить за тем, что происходит в программе. С другой стороны, если вы хотите стать действительно экспертом MDI, глава 26 "Многодокументный интерфейс" вполне поможет начать продвижение на этом пути.

Метод setupwindow () класса DemoMDIWindow будет выполнен первым, как только станет доступным дескриптор главного окна. При его работе выполняются две основные задачи: создаются таймер и дочерние окна. Следующий отрывок представляет код, запускающий таймер.

// Создание таймера if (!SetTimer(0, 50)) ( '

MessageBox("Could not Create Timer",

"OWL 5.0 GDI Demonstration", MB__OK) ;

PostQuitMessage(0) ;

return;

1