{
// Разрешить, только если есть открытое дочернее MDI окно tee.Enable(GetActiveMDIChild() != NULL) ;
Разберемся, как работает управление файлами в дочернем окне MDI. Начнем с функции CmFileNew (); она выглядит так:
void ResMDIClient: :CniFileNew() {
char title [255];
// Увеличение счетчика дочерних окон //и генерация заголовка дочернего MDI окна wspr?.ntf (title, "Resource %d", ++ChildCount);
// Создание нового дочернего окна
// с пустым TEditFile в качестве клиента
TEditFile* childClient = new TEditFile(0, 0, 0);
TMDIChild* child = new TMDIChild(*this, title, childClient),*
// Связывание значка "документ" с дочерним окном child->SetIconSm(GetApplication(), IDI_DOC) ;
//. Развертывание нового дочернего окна в случае,
// если текущее окно развернуто
TMDIChild *curChild = GetActiveMDIChildО;
if (curChild && (curChild->GetWindowLong(GWL_STYLE)
& WS_MAXIMIZE) ) child->Attr.Style 1= WS_MAXIMIZE;
// Создание окна child->Create() ;
// Установка заголовка окна child->SetCaption(title);
// Назначение клиентской области дочернего окна необходимых // фильтров имен файлов
ResTextApp *theApp = TYPESAFEJ30WNCAST(GetApplication(), ResTextApp) ;
childClient->FileData = theApp->FileData;
Эта функция подготавливает заголовок окна и использует его при конструировании экземпляра класса TMDiciient, так же, как и функция CmFileNew о класса sinnpieMDiciient. Важное отличие заключается в том, что в качестве клиента дочернего окна функция ResMDIClient:: CmFileNew о создает экземпляр класса TEditFile. Затем функция передает указатель на этот объект как параметр клиентского окна в конструктор TMDIChild. Это маленькое, но значимое изменение обеспечивает приложению ResourceText возможность работать с текстами в дочерних окнах.