Enregistrement d’un Document personnaliséSaving a Custom Document

Les handles d’environnement la enregistrer, enregistrer en tant que, et Enregistrer tout commandes.The environment handles the Save, Save As, and Save All commands. Lorsqu’un utilisateur clique enregistrer, enregistrer en tant que, ou enregistrer tout sur la fichier menu ou de la fermeture de la solution, ce qui entraîne un Enregistrer tout, ce qui suit processus se produit.When a user clicks Save, Save As, or Save All on the File menu or closes the solution, resulting in a Save All, the following process occurs.

Enregistrer l’Éditeur du clientCustomer Editor Save
Enregistrer, enregistrer sous, puis enregistrer tout gestion des commandes pour un éditeur personnaliséSave, Save As, and Save All command handling for a custom editor

Ce processus est détaillé dans les étapes suivantes :This process is detailed in the following steps:

  1. Pour le enregistrer et enregistrer en tant que des commandes, l’environnement utilise le SVsShellMonitorSelection pour déterminer la fenêtre du document de service et par conséquent, les éléments doivent être enregistrés.For the Save and Save As commands, the environment uses the SVsShellMonitorSelection service to determine the active document window and thus what items should be saved. Une fois que la fenêtre de document actif est connue, l’environnement de recherche le pointeur de la hiérarchie et l’identificateur de l’élément (itemID) pour le document dans la table de document en cours d’exécution.Once the active document window is known, the environment finds the hierarchy pointer and item identifier (itemID) for the document in the running document table. Pour plus d’informations, consultez Table de documents en cours d’exécution.For more information, see Running Document Table.

    Pour la commande Enregistrer tout, l’environnement utilise les informations dans la table de document en cours d’exécution pour compiler la liste de tous les éléments à enregistrer.For the Save All command, the environment uses the information in the running document table to compile the list of all items to save.

  2. Lorsque la solution reçoit un QueryStatus appel, il itère au sein du jeu d’éléments sélectionnés (autrement dit, les sélections multiples exposées par le SVsShellMonitorSelection service).When the solution receives an QueryStatus call, it iterates through the set of selected items (that is, the multiple selections exposed by the SVsShellMonitorSelection service).

  3. Sur chaque élément de la sélection, la solution utilise le pointeur de la hiérarchie pour appeler le IsItemDirty méthode pour déterminer si la commande de menu Enregistrer doit être activée.On each item in the selection, the solution uses the hierarchy pointer to call the IsItemDirty method to determine whether the Save menu command should be enabled. Si un ou plusieurs éléments sont modifiés, la commande est activée.If one or more items are dirty, then the Save command is enabled. Si la hiérarchie utilise un éditeur standard, les délégués de la hiérarchie recherchant dirty état à l’éditeur en appelant le IsDocDataDirty (méthode).If the hierarchy uses a standard editor, then the hierarchy delegates querying for dirty status to the editor by calling the IsDocDataDirty method.

  4. Sur chaque élément sélectionné n’est pas intègre, la solution utilise le pointeur de la hiérarchie pour appeler le SaveItem méthode sur les hiérarchies appropriés.On each selected item that is dirty, the solution uses the hierarchy pointer to call the SaveItem method on the appropriate hierarchies.

    Dans le cas d’un éditeur personnalisé, la communication entre l’objet de données du document et le projet est privée.In the case of a custom editor, the communication between the document data object and the project is private. Par conséquent, des problèmes de persistance spéciaux sont gérées entre ces deux objets.Thus, any special persistence concerns are handled between these two objects.

    Note

    Si vous implémentez votre propre persistance, veillez à appeler la QuerySaveFiles méthode pour gagner du temps.If you implement your own persistence, be sure to call the QuerySaveFiles method to save time. Cette méthode vérifie pour vous assurer qu’il est sûr enregistrer le fichier (par exemple, le fichier n’est pas en lecture seule).This method checks to make sure that it is safe to save the file (for example, the file is not read-only).

Voir aussiSee Also

IOleCommandTarget
Ouverture et enregistrement d’éléments de projetOpening and Saving Project Items