Глава 25. Графический интерфейс устройства

Children[iLoop]->Attr.Style 1= WS_DISABLED;

Children[iLoop]->Create() ;

}

// Посьшаем сообщение, которое говорит, что нужно показать //и разместить дочерние окна PostMessage(WM_COMMAND, ShowChildrenId) ;

)

\

// Приложение готово к работе. Покажем дочерние окна

// и затем разместим их.

void DemoMDIWindow::CmShowChildren()

{ ' ' .

for (int iLoop = 0; iLoop < 3; iLoop++) { Children[iLoop]->Show(true) ;

}

TileChildren();

// Приведем тип окна-потомка к типу оконного класса, в котором

// есть метод TimerTick (т. е. класса, производного от BaseWindow)

// Последовательность приведения: TWindow -> TFrameWindow

// (обрамляющее дочернее окно MDI) -> BaseWindow (клиентское окно)

void ChildTimers(TWindow* Child, void*)

{

TFrameWindow* Frame = TYPESAFEJ30WNCAST(Child, TFrameWindow);

CHECK(Frame) ;

BaseWindow* DemoWin = TYPESAFE_DOWNCAST(Franie->GetClientWindow() , BaseWindow) ;

CHECK(DemoWin) ;

DemoWin->TimerTick() ;

}

// Вызываем каждый из методов TimerTick()

void DemoMDIWindow::EvTimer(UINT)

{

ForEach(ChildTimers, 0);

)

// При каждом изменении размеров окна необходимо перевывести

// заголовки наших окон-потомков

void DemoMDIWindow::EvSize(uint sizeType, TSizeS size)

(

TMDIClient::EvSize(sizeType, size);

TileChiidren() ;

}

//He забыть уничтожить таймер void DemoMDIWindow::EvDestroy() (

KillTimer(O) ;

TMDIClient::EvDestroy();