Partager via


Enregistrement d’un document personnalisé

L’environnement gère les commandes Save, Save As et Save All . Lorsqu’un utilisateur clique sur Enregistrer, Enregistrer sous ou Enregistrer tout dans le menu Fichier ou ferme la solution, ce qui entraîne un Enregistrer tout, le processus suivant se produit.

Éditeur de clients Enregistrer

Gestion des commandes Enregistrer, Enregistrer sous et Tout enregistrer pour un éditeur personnalisé

Ce processus est détaillé dans les étapes suivantes :

  1. Pour les commandes Enregistrer et Enregistrer sous , l’environnement utilise le SVsShellMonitorSelection service pour déterminer la fenêtre de document active et ainsi les éléments à enregistrer. Une fois la fenêtre de document active connue, l’environnement recherche le pointeur de hiérarchie et l’identificateur d’élément (itemID) du document dans la table de documents en cours d’exécution. Pour plus d’informations, consultez La table de documents en cours d’exécution.

    Pour la commande Enregistrer tout, l’environnement utilise les informations de la table de documents en cours d’exécution pour compiler la liste de tous les éléments à enregistrer.

  2. Lorsque la solution reçoit un appel QueryStatus, elle parcourt l’ensemble des éléments sélectionnés, c’est-à-dire les sélections multiples exposées par le service SVsShellMonitorSelection.

  3. Sur chaque élément de la sélection, la solution utilise le pointeur de hiérarchie pour appeler la IsItemDirty méthode pour déterminer si la commande Enregistrer le menu doit être activée. Si un ou plusieurs éléments sont sales, la commande Enregistrer est activée. Si la hiérarchie utilise un éditeur standard, la hiérarchie délègue l’interrogation du statut modifié à l’éditeur en appelant la méthode IsDocDataDirty.

  4. Sur chaque élément sélectionné qui est sale, la solution utilise le pointeur de hiérarchie pour appeler la SaveItem méthode sur les hiérarchies appropriées.

    Dans le cas d’un éditeur personnalisé, la communication entre l’objet de données de document et le projet est privée. Ainsi, toutes les préoccupations de persistance particulières sont gérées entre ces deux objets.

    Note

    Si vous implémentez votre propre persistance, veillez à appeler la méthode QuerySaveFiles afin d'optimiser votre temps. Cette méthode vérifie qu’il est sûr d’enregistrer le fichier (par exemple, le fichier n’est pas en lecture seule).