Condividi tramite


Salvataggio di un documento standard

L'ambiente gestisce i comandi Salva, Salva con nome e Salva tutto. Quando un utente seleziona Salva, Salva con nome o Salva tutto dal menu File o chiude la soluzione, con conseguente salvataggio di tutti, si verifica il processo seguente.

Standard Editor

Salvare, salvare con nome e salvare tutti i comandi per un editor standard

Questo processo è dettagliato nei passaggi seguenti:

  1. Quando vengono selezionati i comandi Salva e Salva con nome, l'ambiente usa il SVsShellMonitorSelection servizio per determinare la finestra del documento attiva e quindi gli elementi da salvare. Dopo che la finestra del documento attiva è nota, l'ambiente trova il puntatore della gerarchia e l'identificatore dell'elemento (itemID) per il documento nella tabella dei documenti in esecuzione. Per altre informazioni, vedere Esecuzione della tabella dei documenti.

    Quando si seleziona il comando Salva tutto , l'ambiente usa le informazioni nella tabella dei documenti in esecuzione per compilare l'elenco di tutti gli elementi da salvare.

  2. Quando la soluzione riceve una QueryStatus chiamata, scorre il set di elementi selezionati, ovvero le selezioni multiple esposte dal SVsShellMonitorSelection servizio.

  3. In ogni elemento della selezione, la soluzione usa il puntatore della gerarchia per chiamare il IsItemDirty metodo per determinare se il comando di menu Salva deve essere abilitato. Se uno o più elementi sono sporchi, il comando Salva è abilitato. Se la gerarchia usa un editor standard, la gerarchia delega l'esecuzione di query sullo stato dirty all'editor chiamando il IsDocDataDirty metodo .

  4. In ogni elemento selezionato che è dirty, la soluzione usa il puntatore della gerarchia per chiamare il SaveItem metodo nelle gerarchie appropriate.

    È comune che la gerarchia usi un editor standard per modificare il documento. In questo caso, l'oggetto dati del documento per tale editor deve supportare l'interfaccia IVsPersistDocData2 . Dopo aver ricevuto la chiamata al SaveItem metodo, il progetto deve informare l'editor che il documento viene salvato chiamando il SaveDocData metodo sull'oggetto dati del documento. L'editor può consentire all'ambiente di gestire la finestra di dialogo Salva con nome chiamando Query Service per l'interfaccia SVsUIShell . In questo modo viene restituito un puntatore all'interfaccia IVsUIShell . L'editor deve quindi chiamare il SaveDocDataToFile metodo , passando un puntatore all'implementazione dell'editor IPersistFileFormat tramite il pPersistFile parametro . L'ambiente esegue quindi l'operazione Salva e fornisce la finestra di dialogo Salva con nome per l'editor. L'ambiente richiama quindi all'editor con IPersistFileFormat.

  5. Se l'utente sta tentando di salvare un documento senza titolo ,ovvero un documento non salvato in precedenza, viene effettivamente eseguito un comando Salva con nome.

  6. Per il comando Salva con nome, l'ambiente visualizza la finestra di dialogo Salva con nome, che richiede all'utente un nome di file.

    Se il nome del file è stato modificato, la gerarchia è responsabile dell'aggiornamento delle informazioni memorizzate nella cache del frame di documento chiamando SetProperty(VSFPROPID_MkDocument).

    Se il comando Salva con nome sposta la posizione del documento e la gerarchia è sensibile alla posizione del documento, la gerarchia è responsabile della consegna della proprietà della finestra del documento aperta a un'altra gerarchia. Ad esempio, ciò si verifica se il progetto tiene traccia se il file è un file interno o esterno (file esterno) in relazione al progetto. Utilizzare la procedura seguente per modificare la proprietà di un file nel progetto File esterni.

Modifica della proprietà del file

Per modificare la proprietà del file nel progetto File esterni

  1. Servizio query per l'interfaccia SVsExternalFilesManager .

    Viene restituito un puntatore a IVsExternalFilesManager2 .

  2. Chiamare il TransferDocument metodo (pszMkDocumentNew, punkWindowFrame) per trasferire il documento nella nuova gerarchia. La gerarchia che esegue il comando Salva con nome chiama questo metodo.