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


CDocument::OnNewDocument

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

virtual BOOL OnNewDocument( );

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

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

Заметки

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

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

Обратите внимание, что случаи, когда OnNewDocument вызываются дважды. Это происходит, когда документ внедрять в качестве сервера документа ActiveX. Функция сначала называется в метод CreateInstance (предоставленный COleObjectFactory- производным классом), а второй раз - COleServerDoc, предоставляемым методом InitNew (производный класс).

Пример

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

// 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;
}

Требования

Header: afxwin.h

См. также

Ссылки

Класс CDocument

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

CDocument::CDocument

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnOpenDocument

CDocument::OnSaveDocument