Enregistrement d’un document personnalisé
L’environnement gère les commandes Enregistrer, Enregistrer sous et Enregistrer tout. 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 de tout, le processus suivant se produit.
Gestion des commandes Enregistrer, Enregistrer sous et Enregistrer pour un éditeur personnalisé
Ce processus est décrit en détail dans les étapes suivantes :
Pour les commandes Enregistrer et Enregistrer sous, l’environnement utilise le service SVsShellMonitorSelection 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’identifiant d’élément (itemID) du document dans la table de documents en cours d’exécution. Pour plus d’informations, consultez Exécution de la table de documents.
Pour la commande Enregistrer tout, l’environnement utilise les informations de la table de document en cours d’exécution pour compiler la liste de tous les éléments à enregistrer.
Lorsque la solution reçoit un appel QueryStatus, elle effectue une itération dans l’ensemble d’éléments sélectionnés (autrement dit, les sélections multiples exposées par le service SVsShellMonitorSelection).
Pour chaque élément de la sélection, la solution utilise le pointeur de hiérarchie pour appeler la méthode IsItemDirty afin de déterminer si le menu de la commande Enregistrer 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 de l’état sale à l’éditeur en appelant la méthode IsDocDataDirty.
Pour chaque élément sale sélectionné, la solution utilise le pointeur de hiérarchie pour appeler la méthode SaveItem 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 inquiétudes particulières liées à la persistance sont gérées entre ces deux objets.
Remarque
Si vous implémentez votre propre persistance, assurez-vous d’appeler la méthode QuerySaveFiles pour gagner du temps. Cette méthode effectue une vérification pour s’assurer qu’il est sûr d’enregistrer le fichier (par exemple, le fichier n’est pas en lecture seule).