Enregistrement d’un document standard

L’environnement gère les commandes Save, Save As et Save All. Lorsqu’un utilisateur sélectionne 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.

Standard Editor Enregistrer, enregistrer sous et enregistrer toutes les commandes pour un éditeur standard

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

  1. Lorsque les commandes Enregistrer et Enregistrer sous sont sélectionnées, 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.

    Lorsque la commande Enregistrer tout est sélectionnée, l’environnement utilise les informations contenues dans 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.

    Il est courant que la hiérarchie utilise un éditeur standard pour modifier le document. Dans ce cas, l’objet de données de document pour cet éditeur doit prendre en charge l’interface IVsPersistDocData2 . Lors de la réception de l’appel SaveItem de méthode, le projet doit informer l’éditeur que le document est enregistré en appelant la SaveDocData méthode sur l’objet de données de document. L’éditeur peut autoriser l’environnement à gérer la boîte de dialogue Enregistrer sous, en appelant Query Service l’interfaceSVsUIShell. Retourne un pointeur vers l’interface IVsUIShell . L’éditeur doit ensuite appeler la SaveDocDataToFile méthode, en passant un pointeur à l’implémentation de IPersistFileFormat l’éditeur au moyen du pPersistFile paramètre. L’environnement effectue ensuite l’opération Enregistrer et fournit la boîte de dialogue Enregistrer sous pour l’éditeur. L’environnement revient ensuite à l’éditeur avec IPersistFileFormat.

  5. Si l’utilisateur tente d’enregistrer un document sans titre (autrement dit, un document précédemment non enregistré), une commande Save As est en fait effectuée.

  6. Pour la commande Enregistrer sous, l’environnement affiche la boîte de dialogue Enregistrer sous, en invitant l’utilisateur à entrer un nom de fichier.

    Si le nom du fichier a changé, la hiérarchie est chargée de mettre à jour les informations mises en cache du cadre de document en appelant SetProperty(VSFPROPID_MkDocument).

    Si la commande Enregistrer sous déplace l’emplacement du document et que la hiérarchie est sensible à l’emplacement du document, la hiérarchie est chargée de remettre la propriété de la fenêtre de document ouverte à une autre hiérarchie. Par exemple, cela se produit si le projet suit si le fichier est un fichier interne ou externe (fichier divers) par rapport au projet. Utilisez la procédure suivante pour modifier la propriété d’un fichier dans le projet Divers fichiers.

Modification de la propriété du fichier

Pour modifier la propriété du fichier dans le projet Fichiers divers

  1. Interroger le service pour l’interface SVsExternalFilesManager .

    Un pointeur vers qui IVsExternalFilesManager2 est retourné.

  2. Appelez la TransferDocument méthode (pszMkDocumentNew, punkWindowFrame) pour transférer le document vers la nouvelle hiérarchie. La hiérarchie effectuant la commande Save As appelle cette méthode.