Partager via


CDocument::OnNewDocument

Appelé par l'infrastructure dans le cadre de la nouvelle commande de fichier.

virtual BOOL OnNewDocument( );

Valeur de retour

Une valeur différente de zéro si le document a été correctement initialisé ; sinon 0.

Notes

L'implémentation par défaut des appels de cette la fonction membre de DeleteContents à garantir que le document est vide puis marque le document comme propre. Remplacez cette fonction pour initialiser la structure de données pour un document. Vous devez appeler la version de classe de base de cette fonction de la substitution de.

Si l'utilisateur choisit la nouvelle commande de fichier dans une application SDI, l'infrastructure utilise la fonction pour réinitialiser le document existant, au lieu de créer un nouveau. Si l'utilisateur choisit le fichier nouveau dans une application d'interface multidocument (MDI), l'infrastructure crée un nouveau document chaque fois et appelle cette fonction pour l'initialisation. Vous devez définir votre code d'initialisation de cette fonction plutôt que dans le constructeur pour la nouvelle commande de fichier soit efficace dans les applications SDI.

Notez qu'il existe des cas où OnNewDocument est appelé deux fois. Cela se produit lorsque le document est inclus en tant que serveur de document ActiveX. La première fonction est appelée par la méthode d' CreateInstance (exposée par COleObjectFactoryclasse dérivée) et une deuxième fois par la méthode d' InitNew (exposée par COleServerDocclasse dérivée de).

Exemple

Les exemples suivants montrent des autres méthodes pour initialiser un objet document.

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

Configuration requise

Header: afxwin.h

Voir aussi

Référence

CDocument, classe

Graphique de la hiérarchie

CDocument::CDocument

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnOpenDocument

CDocument::OnSaveDocument