Страница 10 из 40 virtual BOOL GetDocString(CString& rString, enum DocStringIndex index) const; Возвращаемое значение Ненулевое, если найдена указанная строка, и ноль в противном случае. Аргументы "sectiontableheader"rString - ссылка на объект класса CString в который будет помещена искомая строка после окончания работы функции. "sectiontableheader"index - индекс текстового поля, которое следует извлечь из строкового ресурса, связанного с данным объектом класса шаблона документа. Этот аргумент может принимать одно из следующих значений: "sectiontableheader"CDocTemplate::windowTitle - текст, который появляется в заголовке окна приложения (например, "Microsoft Excel"). Данное поле используется только в однооконном приложении; "sectiontableheader"CDocTemplate::docName - корневое имя для имени документа по умолчанию (например, "Sheet"). Это имя плюс порядковый номер, составляют имя нового документа данного типа при его создании в результате выбора команды меню File|New (Файл|Создать) (например, "Sheet1" или "Sheet2"). Если это поле пусто, то в качестве корневого имени используется "Untitled"; "sectiontableheader"CDocTemplate::fileNewName - имя данного типа документа. Если данное приложение использует более одного типа документа, то это имя выводится в диалоговом окне New (например, "Worksheet"). Если это имя не задано, то новый документ данного типа не может быть создан, если приложение использует несколько типов документов; "sectiontableheader"CDocTemplate::filterName - описание типа документа и его расширения, используемого для поиска документов данного типа. Эта строка отображается в раскрывающемся списке Тип Файлов диалоговых окон Open (Открыть) и Save As (Сохранить как) (например, "Worksheets (*.xls)"). Если это текстовое поле пусто, то файлы данного типа отображаются только в режиме просмотра всех файлов директория; "sectiontableheader"CDocTemplate::filterExt - расширение, используемое документами данного типа (например, ".xls"). Если это текстовое поле пусто, то данный тип документа не имеет расширения, подставляемого по умолчанию к его имени; "sectiontableheader"CDocTemplate::regFileTypeId - идентификатор типа документа, сохраняемый в базе данных реестра, поддерживаемого Windows. Эта строка используется исключительно для системных целей (например, "ExcelWorksheet"). Если это текстовое поле пусто, то данный тип документа не может быть зарегистрирован в диспетчере файлов Windows; "sectiontableheader"CDocTemplate::regFileTypeName - имя типа документа, хранимое в базе данных реестра, поддерживаемого Windows. Эта строка может отображаться в диалоговых окнах приложений, имеющих доступ к базе данных реестра (например, "Microsoft Excel Worksheet"). Описание Данная функция вызывается для получения текстовых строк, описывающих тип документа. Строка, содержащая эти строки в виде своих полей, хранится в объекте класса шаблона документа и передается туда из строкового ресурса, хранящегося в файле ресурсов данного приложения. Приложение вызывает данную функцию, когда ему необходимо получить текстовую информацию, используемую им для организации интерфейса пользователя. Если для файлов, хранящих документы данного типа, определено особое расширение, то приложение вызывает эту функцию для включения соответствующей записи в базу данных реестра Windows, что позволяет открывать данные документы средствами диспетчера файлов Windows. Эта функция может вызываться только в классах, производных от класса CDocTemplate. Класс CDocument обеспечивает основные функциональные возможности создаваемого пользователем класса документа. Документ представляет собой модуль данных, используемых пользователем в своем приложении, и обычно открывается командой File|Open (Файл|Открыть) и сохраняется командой File|Save (Файл|Сохранить). Класс CDocument содержит методы, обеспечивающие создание документа, его загрузку и сохранение. Приложение может поддерживать больше чем один тип документа. Например, оно может работать как с электронными таблицами, так и с текстовыми документами. Каждый тип документа должен быть включен в один из шаблонов документа. Шаблон документа определяет ресурсы (например, меню, значок или таблица акселератора) используемые данным типом документа. Каждый документ содержит указатель на связанный объект CDocTemplate. Пользователи взаимодействуют с документом через связанный с ним объект класса CView. Класс представления выполняет отображение документа в окне и преобразует вводимую пользователем информацию в соответствующие изменения в документе. Один класс документа может быть связан с несколькими классами представления. Когда пользователь открывает окно документа, приложение создает объект соответствующего класса представления и присоединяет его к документу. Шаблон документа определяет класс представления и класс окна, соответствующие данному типу документа. Классы документов включены в стандартную процедуру обработки сообщений в приложении и, следовательно, могут получать команды от стандартных компонентов интерфейса пользователя, например, от команды меню File|Save (Файл|Сохранить). Документ получает команды, посланные активным классом представления. Если документ не обрабатывает данную команду, то она передается шаблону документа для дальнейшей обработки. Когда в документ вносятся изменения, каждый из связанных с ним объектов класса представления должен отразить эти изменения. Класс CDocument имеет функцию-член класса UpdateAllViews, позволяющую приложению сообщить всем связанным с данным документом объектам класса представления о том, что в документ внесены изменения и данные объекты должны внести соответствующие изменения в выводимую ими информацию. Перед закрытием документа приложение запрашивает пользователя о необходимости сохранить внесенные в него изменения. Чтобы создать собственный класс документа: 1.Создайте класс, производный от класса CDocument. 2.Включите в него переменные для хранения пользовательских данных. 3.Создайте методы для чтения и внесения изменений в эти данные. В основном этими методами будут пользоваться связанные с документом объекты класса представления. 4.Перегрузите функцию CObject::Serialize, позволяющую читать и записывать документы на диск. Описание данного класса содержится в файле заголовка afxwin.h. virtual CFile* GetFile(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError); Возвращаемое значение Указатель на объект класса CFile. Аргументы "sectiontableheader"lpszFileName - строка, содержащая путь к открываемому файлу. Путь может быть как относительным, так и абсолютным. "sectiontableheader"nOpenFlags - флаги, определяющие режим доступа к файлу, определяющие действия, которые необходимо предпринять при открытии файла. Эти флаги могут принимать те же самые значения, что и соответствующие флаги конструктора класса CFile и они, также, объединяются оператором побитового ИЛИ (|).Необходимо указать как минимум один флаг доступа и один флаг разделения ресурсов. Флаги modeCreate и modeNoInherit являются не обязательными. "sectiontableheader"pError - указатель на существующий объект класса исключений файла, в который будут помещены результаты открытия файла. Описание Данная функция используется для получения указателя на объект класса CFile. const CString& GetPathName() const; Возвращаемое значение Полный путь к файлу документа. Эта строка является пустой в том случае, если документ еще не был сохранен или несвязан с дисковым файлом. Описание Данная функция позволяет получить полный путь к файлу документа на диске. virtual BOOL OnNewDocument(); Возвращаемое значение Отличное от нуля, если документ был успешно инициализирован, в противном случае - 0. Описание Вызывается приложением как часть обработки команды меню File|New (Файл|Создать). По умолчанию данная функция вызывает функцию DeleteContents, гарантирующую, что данный документ пуст, и отмечает данный документ, как пустой. В данную функцию следует помещать инициализацию всех структур данных нового документа, причем все операторы инициализации должны располагаться после вызова функции базового класса. Если данная функция вызывается в однооконном приложении, то она уничтожает содержимое существующего документа. В случае многооконного приложения при выборе команды File|New (Файл|Создать) происходит создание нового документа и уже для него вызывается данная функция. Поскольку в однооконном приложении класс документа создается с помощью конструктора при инициализации приложения, а новые документы создаются путем уничтожения текущего документа при запуске функции OnNewDocument, то все процедуры инициализации документа в однооконном приложении должны располагаться в данной функции, а не в конструкторе. virtual void ReleaseFile(CFile* pFile, BOOL bAbort); Аргументы "sectiontableheader"pFile - указатель на объект класса CFile, который необходимо освободить. "sectiontableheader"bAbort - определяет функцию, которая будет использована при освобождении файла. Если данный аргумент имеет значение FALSE, то для освобождения файла используется функция CFile::Close, в противном случае используется функция CFile::Abort. Описание Данная функция вызывается приложением для освобождения файла, делая его доступным для других приложений. Если аргумент bAbort имеет значение TRUE, то функция ReleaseFile вызывает функцию CFile::Abort и файл освобождается. Функция CFile::Abort не вызывает исключения. Если аргумент bAbort имеет значение FALSE, то функция ReleaseFile вызывает функцию CFile::Close и файл освобождается. Данная функция перегружается в том случае, если пользователь должен выполнить определенные действия перед закрытием файла. |