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 l’enregistrement tout, le processus suivant se produit.

Customer Editor Save Enregistrer, enregistrer sous et enregistrer toutes les commandes 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, elle effectue une QueryStatus itération dans l’ensemble d’éléments sélectionnés (autrement dit, les sélections multiples exposées par le SVsShellMonitorSelection service).

  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 sale, la commande Enregistrer est activée. Si la hiérarchie utilise un éditeur standard, la hiérarchie délègue l’interrogation de sale’état à l’éditeur en appelant la IsDocDataDirty méthode.

  4. Sur chaque élément sélectionné 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.

    Remarque

    Si vous implémentez votre propre persistance, veillez à appeler la QuerySaveFiles méthode pour gagner du temps. Cette méthode case activée pour vous assurer qu’il est sûr d’enregistrer le fichier (par exemple, le fichier n’est pas en lecture seule).