CDocument::OnOpenDocument

Виртуальный BOOL OnOpenDocument ( LPCTSTR lpszPathName );

Возвращаемое значение

Ненулевое значение, если документ был успешно загружен; в противном случае 0.

Параметры

lpszPathName

Указывает путь документа будет открыт.

Примечания

Вызывается в рамках как часть команды открыть файл. Реализация по умолчанию эта функция открывает указанный файл, вызывается функция-член DeleteContents для обеспечения документ пуст, вызывает CObject::Serialize для чтения содержимого этого файла и затем помечает этот документ как чистого. Переопределите эту функцию, если вы хотите использовать что-то за исключением архива механизм или файл. Например можно написать приложение, где документы представляют собой записи в базу данных, а не в отдельных файлах.

Если пользователь выбирает команду Открыть файл в приложении SDI, framework использует эту функцию для повторной инициализации существующих CDocument объекта, а не создавать новое. Если пользователь выбирает открытие файла в приложении MDI, платформа создает новый объект CDocument каждый раз и затем вызывает эту функцию для его инициализации. Необходимо поместить код инициализации в этой функции вместо того, чтобы в конструкторе для команды открыть файл эффективным в приложения SDI.

Пример

/ / Следующие примеры иллюстрируют альтернативные методы
/ / инициализации объекта документа.

/ / Метод 1: В приложении MDI, простой место для ведения / / инициализации в документе constructor.nbsp; Рамки / / всегда создает новый объект документа для новых файлов или открытия файла.

CMyDoc::CMyDoc()
{
   / / Выполняют инициализацию MDI документа здесь.
   // ...
}

/ / Метод 2: В приложении MDI или SDI, делать все инициализации / / в переопределении On&NewDocument, если вы уверены, что
/ / инициализации фактически сохраняется после сохранения файла
/ / и полностью восстановленные после открытия файла через сериализации.

BOOL CMyDoc::OnNewDocument()
{
   Если (!.CDocument::OnNewDocument())
      вернуть значение FALSE;

/ / Выполняют инициализацию нового документа.

Возвращает значение TRUE;
}

/ / Метод 3: если инициализации вашего документа не является
/ / эффективно сохранена и восстановлена путем сериализации (во время сохранения файла
/ / и открытие файла), затем реализовать инициализации в сингл
/ / функции (с именем InitMyDocument в этом примере).  Позвонить
/ / Общие функции инициализации из переопределения обеих
/ / OnNewDocument и OnOpenDocument.
 
BOOL CMyDoc::OnNewDocument()
{
   Если (!.CDocument::OnNewDocument())
      вернуть значение FALSE;

InitMyDocument(); / / вызова функции общей инициализации

/ / Если ваш новый объект документа требует дополнительной инициализации
   / / не обязательно при десериализации документа через открытый файл
   / / затем выполнить дополнительные инициализации здесь.

Возвращает значение TRUE;
}

Обзор CDocument |nbsp; Члены класса | Иерархическая схема

См. такжеnbsp;CDocument::DeleteContents, CDocument::OnCloseDocument, CDocument::On&NewDocument, CDocument::OnSaveDocument, CDocument::ReportSaveLoadException, CObject::Serialize

Index