Глава 26. Многодокументный интерфейс________________________777

candoseo клиента, проверяющую, сохранены ли все внесенные в текст изменения. Если нет, функция предлагает пользователю сохранить изменения. candose возвращает значение true только в том случае, если файл не изменен или пользователь отказался от сохранения изменений.

Возможности клиента дочернего окна MDI

Приведенное выше описание в основном завершает наше обсуждение прикладных функций дочерних окон MDI. "Стоп! — скажете вы. — А где же тут происходит обработка текстов?" Вот тут-то и зарыта изюминка этого примера. Весь этот код содержится в стандартном классе OWL TEditFile. Назначив экземпляр этого класса клиентом дочернего окна MDI, мы, практически ничего не делая, передали дочернему окну необходимую нам функциональность.

В более специальных случаях вам, естественно, придется так или иначе программировать класс дочернего клиента MDI. Если вы будете аккуратны, то включить этот класс в приложение MDI не составит труда, более того, ваш класс с минимальными усилиями можно будет использовать в других целях, не- имеющих отношения к MDI. И это только малая часть многочисленных достоинств C++.

Далее приведены листинги, необходимые для построения проектов SimpleMDI и ResoureeText.

h07711.jpg

//////////////////////////////////////////////////////////////////

// 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 "&Файл"