Deux façons de créer un objet de CArchive
Il existe deux façons de créer un objet d' CArchive :
Création implicite d'un objet de CArchive via l'infrastructure
Création explicite d'un objet de CArchive
Création implicite d'un objet de CArchive via l'infrastructure
Le plus courant, et le plus rapide, consiste à permettre l'infrastructure créer un objet de CArchive pour votre document au nom de la sauvegarde, enregistrez comme, et ouvrir les commandes du menu Fichier.
Voici ce que l'infrastructure affiche lorsque l'utilisateur de votre application libère la commande enregistrer sous le menu Fichier :
Affiche la boîte de dialogue Enregistrer sous et obtient le nom de fichier de l'utilisateur.
Ouvre le fichier nommé par l'utilisateur comme un objet d' CFile .
Crée un objet d' CArchive qui pointe vers cet CFile l'objet.En créant l'objet d' CArchive , l'infrastructure définit le mode « pour stocker (l'écriture, sérialisent), par opposition à « charge » (read, désérialisent).
Appelle la fonction d' Serialize définie dans votre CDocumentclasse dérivée, en lui passant une référence à l'objet d' CArchive .
La fonction d' Serialize de votre document écrit ensuite des données dans l'objet d' CArchive , comme expliqué bientôt.Lors de le retour de la fonction d' Serialize , l'infrastructure détruit l'objet d' CArchive puis l'objet d' CFile .
Ainsi, si vous laissez l'infrastructure créer l'objet d' CArchive pour votre document, il vous suffit d'affecter à l'implémentation de la fonction d' Serialize de le document qui écrit et la lit à partir de l'archive.Vous devez également implémenter Serialize pour tout CObject- les objets dérivés que la fonction d' Serialize du document sérialise ensuite directement ou indirectement.
Création explicite d'un objet de CArchive
Outre la sérialisation d'un document via l'infrastructure, il existe d'autres occasions lorsque vous pouvez avoir besoin d'un objet d' CArchive .Par exemple, vous pouvez sérialiser des données vers le presse-papiers, représenté par un objet d' CSharedFile .Sinon, vous pouvez utiliser une interface utilisateur pour enregistrer un fichier différent de celui proposé par l'infrastructure.Dans ce cas, vous pouvez créer explicitement un objet d' CArchive .Pour ce faire la même manière que l'infrastructure fait, à l'aide de la procédure suivante.
Pour créer explicitement un objet de CArchive
Construisez un objet d' CFile ou un objet dérivé d' CFile.
Passez l'objet d' CFile au constructeur pour CArchive, comme indiqué dans l'exemple suivant :
CFile theFile; theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite); CArchive archive(&theFile, CArchive::store);
Le deuxième argument du constructeur d' CArchive est une valeur énumérée qui spécifie si l'archive sera utilisée pour stocker ou charger des données à partir de le fichier.La fonction d' Serialize d'un objet active cet état en appelant la fonction de IsStoring pour l'objet archive.
Lorsque vous avez terminé stocker ou charger des données à partir de l'objet d' CArchive , fermez -le.Bien que les objets d' CArchive (et CFile) ferment automatiquement l'archive (et le fichier), il est conseillé à explicitement font donc comme il facilite la récupération des erreurs.Pour plus d'informations sur la gestion des erreurs, consultez l'article exceptions : Interception et supprimant des exceptions.
Pour fermer l'objet de CArchive
l'exemple suivant montre comment fermer l'objet d' CArchive :
archive.Close(); theFile.Close();