{

// Разрешить, только если есть открытое дочернее 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 возможность работать с текстами в дочерних окнах.