À CDocument::OnOpenDocument

virtuel BOOL OnOpenDocument ( LPCTSTR lpszPathName );

Valeur de retour

Différent de zéro si le document a été chargé avec succès ; sinon 0.

Paramètres

lpszPathName

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

Remarques

Appelé par le framework dans le cadre de la commande fichier ouvrir. L'implémentation par défaut de cette fonction ouvre le fichier spécifié, appelle la fonction membre DeleteContents pour s'assurer que le document est vide, appelle CObject::Serialize pour lire le contenu du fichier et marque ensuite le document tel qu'il est propre. Substituez cette fonction si vous voulez utiliser quelque chose d'autre que le mécanisme de l'archive ou le mécanisme du fichier. Par exemple, vous pouvez écrire une application où documents représentent des enregistrements dans une base de données plutôt que des fichiers séparés.

Si l'utilisateur choisit la commande ouvrir dans une application SDI, le framework utilise cette fonction pour réinitialiser l'objet CDocument existant, plutôt que de créer un nouveau. Si l'utilisateur choisit le fichier ouvert dans une application MDI, le cadre construit un nouvel objet de CDocument chaque fois et puis appelle cette fonction pour l'initialiser. Vous devez placer votre code d'initialisation dans cette fonction au lieu de dans le constructeur de la commande fichier ouvrir être efficace dans les applications SDI.

Exemple

/ / Les exemples suivants illustrent les méthodes alternatives de
/ / initialisation d'un objet document.

/ / Méthode 1: dans une application MDI, le plus simple où faire / / initialisation est dans le document constructor.nbsp ; Le cadre / / crée toujours un nouvel objet document pour le nouveau fichier ou dossier ouvert.

CMyDoc::CMyDoc()
{
   / / Do l'initialisation du document MDI ici.
   // ...
}

/ / Méthode 2: dans une application SDI ou MDI, faire toute initialisation / / dans une substitution de On&NewDocument, si vous êtes certain que
/ / l'initialisation est effectivement enregistrée sur fichier enregistrer
/ / et entièrement restauré sur un fichier ouvert, via la sérialisation.

BOOL CMyDoc::OnNewDocument()
{
   if (!.CDocument::OnNewDocument())
      Return FALSE ;

/ / Do l'initialisation du nouveau document ici.

Return TRUE ;
}

/ / Méthode 3: si l'initialisation de votre document n'est pas
/ / effectivement sauvé et restauré par la sérialisation (pendant le fichier enregistrer
/ / et ouvrir), puis mettre en œuvre l'initialisation en single
/ / fonction (appelé InitMyDocument dans cet exemple).  Appelez le
/ / partage de la fonction d'initialisation de substitutions des deux
/ / OnNewDocument et OnOpenDocument.
 
BOOL CMyDoc::OnNewDocument()
{
   if (!.CDocument::OnNewDocument())
      Return FALSE ;

InitMyDocument() ; / / appeler votre fonction d'initialisation partagé

/ / Si votre nouvel objet document requiert une initialisation supplémentaire
   / / n'est pas nécessaire lorsque le document est désérialisé via fichier ouvrir,
   / / puis d'exécuter l'initialisation supplémentaire ici.

Return TRUE ;
}

Aperçu de CDocument |nbsp ; Membres de la classe | Graphique de la hiérarchie

Voir aussinbsp ;CDocument::DeleteContents, CDocument::OnCloseDocument, CDocument::On&NewDocument, CDocument::OnSaveDocument, CDocument::ReportSaveLoadException, CObject::Serialize

Index