Класс, предназначенный для работы с документом, порождается от класса CDocument. Для него должно быть разрешено динамическое создание объектов с помощью макроса DECLARE_DYNCREATE(). Обычно данный класс обрабатывает все команды, связанные с изменением состояния документа, и содержит очередь сообщений для этих команд. Теоретически, класс документа должен отвечать за обработку данных, содержащихся в документе. Поэтому он обрабатывает те команды, которые вызывают изменение данных. Класс CDocument содержит множество функций, которые можно использовать в программе и, в некоторых случаях, переопределять. К последним относится функция OnNewDocument(), которая вызывается при создании нового документа. Ее прототип таков:
virtual BOOL CDocument::OnNewDocument();
В переопределенной функции необходимо сначала вызывать базовую функцию из класса CDocument. Функция должна возвращать ненулевое значение при успешном завершении и ноль — в противном случае. Другой функцией, которая часто переопределяется в классе документа, является функция Serialize(). Она является членом класса CObject и будет описана немного позднее.
Ниже приведен oобразец класса, предназначенного для работы с документом:
// Это класс документа
class CSampleDoc : public CDocument
{
DECLARE_DYNCREATE(CSampleDoc)
// закрытая часть класса
public:
CSampleDoc();
BOOL OnNewDocument(); //инициализация каждого нового документа
void Serialize(CArchive &arch); //запись или получение данных
// открытая часть класса
DECLARE_MESSAGE_MAP()
};
|