Глава 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();