724 ____________Часть V. Инструментарий программиста
этих классов. Именно в этом файле, показанном на листинге 25.2, происходит создание таймера и порожденных окон.
// Необходимые заголовки
#include <owl\mdi.h> ftinclude "demo.h"
#include "rects.h" ftinclude "smiley.h" ttinclude "fills.h"
IMPLEMENT_CASTABLE1(BaseWindow, TWindow) ;
DEFINE_RESPONSE_TABLE1(DemoMDIWindow, TMDIClient)
EV_COMMAND(ShowChildrenId, CmShowChildren), .
EV_WM_TIMER,
EV_WM_SIZE,
EV_WM_DESTROY, END RESPONSE TABLE;
// ===================== Demo MDI Window
// Инициализация порожденных окон и создание таймера void DemoMDIWindow::SetupWindow()
{
// Первым инициализируется родительский класс TMDIClient::SetupWindow() ;
// Создание таймера if (!SetTimer(0, 50)){
MessageBox("Создать таймер не удалось", "OWL 5.0 GDI Demo", MB_OK) ;
PostQuitMessage(0) ;
return;
}
// Создание порожденных окон Children[0] = new TMDIChild(*this, "Прямоугольники",
new RectsWindow) ;
Children[l] = new TMDIChild(*this, "Фигуры и линии",
new ShapesAndFillsWindow) ;
Children[2] = new TMDIChild(*this, "Эллипсы и дуги",
new SmileyWindow) ;
// Устанавливаем стили такими, что порожденные окна спрятаны, // неактивны и не имеют своего заголовка. Затем создаем окна. for (int iLoop = 0; iLoop < 3; iLoop++) {
Children[iLoop]->Attr.Style &= ~(WS_VISIBLE I WS_SYSMENU I WS_MINIMIZEBOX I WS MAXIMIZEBOX);