Поделиться через


CDocument::OnOpenDocument

Вызываемый платформой как часть команды открыть файл.

virtual BOOL OnOpenDocument(
   LPCTSTR lpszPathName 
);

Параметры

  • lpszPathName
    Указывает путь к документу, который необходимо открыть.

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

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

Заметки

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

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

Пример

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

// Method 1: In an MDI application, the simplest place to do 
// initialization is in the document constructor.  The framework 
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
   // Do initialization of MDI document here.
}
// Method 2: In an SDI or MDI application, do all initialization 
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
      return FALSE;

   // Do initialization of new document here.

   return TRUE;
}
// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example).  Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
      return FALSE;

   InitMyDocument(); // call your shared initialization function

   // If your new document object requires additional initialization
   // not necessary when the document is deserialized via File Open,
   // then perform that additional initialization here.

   return TRUE;
}
// Additional example of OnOpenDocument()
BOOL CExampleDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
   if (!CDocument::OnOpenDocument(lpszPathName))
      return FALSE;

   InitMyDocument(); // call your shared initialization function

   return TRUE;
}

Требования

Header: afxwin.h

См. также

Ссылки

Класс CDocument

Диаграмма иерархии

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnNewDocument

CDocument::OnSaveDocument

CDocument::ReportSaveLoadException

CObject::Serialize