Partager via


Deux manières de créer un objet CArchive

Il existe deux manières de créer un objet CArchive :

Création implicite d’un objet CArchive via l’infrastructure

Le moyen le plus courant et le plus simple consiste à laisser l’infrastructure créer un CArchive objet pour votre document pour le compte des commandes Enregistrer, Enregistrer sous et Ouvrir dans le menu Fichier.

Voici ce que fait l’infrastructure lorsque l’utilisateur de votre application émet la commande Enregistrer sous dans le menu Fichier :

  1. Présente la boîte de dialogue Enregistrer sous et obtient le nom de fichier de l’utilisateur.

  2. Ouvre le fichier nommé par l’utilisateur en tant qu’objet CFile .

  3. Crée un CArchive objet qui pointe vers cet CFile objet. Lors de la création de l’objet CArchive , l’infrastructure définit le mode sur « store » (écriture, sérialisation), par opposition à « charger » (lecture, désérialisation).

  4. Appelle la Serialize fonction définie dans votre CDocumentclasse dérivée, en lui transmettant une référence à l’objet CArchive .

La fonction de Serialize votre document écrit ensuite des données dans l’objet CArchive , comme expliqué sous peu. À l’issue de votre Serialize fonction, l’infrastructure détruit l’objet CArchive , puis l’objet CFile .

Par conséquent, si vous laissez l’infrastructure créer l’objet CArchive pour votre document, il vous suffit d’implémenter la fonction du Serialize document qui écrit et lit dans et à partir de l’archive. Vous devez également implémenter Serialize pour tous CObjectles objets dérivés que la fonction du Serialize document sérialise directement ou indirectement.

Création explicite d’un objet CArchive

Outre la sérialisation d’un document via l’infrastructure, il existe d’autres occasions lorsque vous pouvez avoir besoin d’un CArchive objet. Par exemple, vous souhaiterez peut-être sérialiser des données vers et à partir du Presse-papiers, représenté par un CSharedFile objet. Vous pouvez également 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 CArchive objet. Vous procédez de la même façon que l’infrastructure, à l’aide de la procédure suivante.

Pour créer explicitement un objet CArchive

  1. Construisez un CFile objet ou un objet dérivé de CFile.

  2. Passez l’objet CFile au constructeur pour CArchive, comme illustré 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 CArchive constructeur est une valeur énumérée qui spécifie si l’archive sera utilisée pour stocker ou charger des données vers ou à partir du fichier. La Serialize fonction d’un objet case activée cet état en appelant la IsStoring fonction pour l’objet archive.

Une fois que vous avez terminé de stocker ou de charger des données vers ou depuis l’objet CArchive , fermez-le. Bien que les CArchive objets (et CFile) ferment automatiquement l’archive (et le fichier), il est recommandé de le faire explicitement, car il facilite la récupération à partir d’erreurs. Pour plus d’informations sur la gestion des erreurs, consultez l’article Exceptions : Intercepter et supprimer des exceptions.

Pour fermer l’objet CArchive

  1. L’exemple suivant montre comment fermer l’objet CArchive :

    archive.Close();
    theFile.Close();
    

Voir aussi

Sérialisation : sérialisation d’un objet