Partager via


CDocument::OnOpenDocument

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

virtual BOOL OnOpenDocument(
   LPCTSTR lpszPathName 
);

Paramètres

  • lpszPathName
    Pointe vers le chemin d'accès du document à ouvrir.

Valeur de retour

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

Notes

L'implémentation par défaut de cette fonction ouvre le fichier spécifié, appelle la fonction membre de DeleteContents pour garantir que le document est vide, appelle CObject::Serialize pour lire le contenu du fichier, puis marque le document comme propre.Remplacez cette fonction si vous souhaitez utiliser autre que le mécanisme d'archivage ou le mécanisme de fichier.Par exemple, vous pouvez écrire une application où les documents représentent des enregistrements dans une base de données plutôt que des fichiers séparés.

Si l'utilisateur sélectionne la commande ouverte de fichier dans une application SDI, l'infrastructure utilise la fonction pour réinitialiser l'objet existant de CDocument , au lieu de créer un nouveau.Si l'utilisateur choisit le fichier ouvert dans une application MDI, l'infrastructure construit un objet de CDocument 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 commande ouverte de fichier soit efficace dans les applications SDI.

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;
}
// Additional example of OnOpenDocument()
BOOL CExampleDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
   if (!CDocument::OnOpenDocument(lpszPathName))
      return FALSE;

   InitMyDocument(); // call your shared initialization function

   return TRUE;
}

Configuration requise

Header: afxwin.h

Voir aussi

Référence

Classe de CDocument

Graphique de la hiérarchie

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnNewDocument

CDocument::OnSaveDocument

CDocument::ReportSaveLoadException

CObject::Serialize