Глава 26. Многодокументный интерфейс________________________777
candoseo клиента, проверяющую, сохранены ли все внесенные в текст изменения. Если нет, функция предлагает пользователю сохранить изменения. candose возвращает значение true только в том случае, если файл не изменен или пользователь отказался от сохранения изменений.
Возможности клиента дочернего окна MDI
Приведенное выше описание в основном завершает наше обсуждение прикладных функций дочерних окон MDI. "Стоп! — скажете вы. — А где же тут происходит обработка текстов?" Вот тут-то и зарыта изюминка этого примера. Весь этот код содержится в стандартном классе OWL TEditFile. Назначив экземпляр этого класса клиентом дочернего окна MDI, мы, практически ничего не делая, передали дочернему окну необходимую нам функциональность.
В более специальных случаях вам, естественно, придется так или иначе программировать класс дочернего клиента MDI. Если вы будете аккуратны, то включить этот класс в приложение MDI не составит труда, более того, ваш класс с минимальными усилиями можно будет использовать в других целях, не- имеющих отношения к MDI. И это только малая часть многочисленных достоинств C++.
Далее приведены листинги, необходимые для построения проектов SimpleMDI и ResoureeText.
//////////////////////////////////////////////////////////////////
// PROJECT: SIMPLMDI.EXE
// FILE: SMDIAPP.RC
// AUTHOR: Anonymous & Co
//
// Файл описания ресурсов SimpleMDI
//////////////////////////////////////////////////////////////////
#include <owl\mdi.rh> ftinclude <owl\window.rh>
ftdefine MDI_MENU 100
#define CM_MDIFILENEW 24331 // Создание файла
#define CM_FILEOPEN 24332 // Открытие файла
ftdefine CM_FILECLOSE 24339 // Закрытие файла I
ftdefine IDI_MDIAPPLICATION • 1001 ftdefine IDI_DOC 1002
MDI_MENU MENU (
POPUP "&Файл"