Compartilhar via


Salvando um documento padrão

O ambiente manipula os comandos Salvar, Salvar como e Salvar Tudo. Quando um usuário seleciona Salvar, Salvar como ou Salvar Tudo no menu Arquivo ou fecha a solução, resultando em um Salvar Tudo, o processo a seguir ocorre.

Editor Padrão

Salvar, salvar como e salvar todos os tratamentos de comando para um editor padrão

Esse processo é detalhado nas seguintes etapas:

  1. Quando os comandos Salvar e Salvar como são selecionados, o ambiente usa o SVsShellMonitorSelection serviço para determinar a janela do documento ativo e, portanto, quais itens devem ser salvos. Uma vez identificada a janela ativa do documento, o ambiente localiza o ponteiro da hierarquia e o identificador de item (itemID) para o documento na tabela de documentos em execução. Para obter mais informações, consulte Como executar a tabela de documentos.

    Quando o comando Salvar Tudo é selecionado, o ambiente usa as informações na tabela de documentos em execução para compilar a lista de todos os itens a serem salvos.

  2. Quando a solução recebe uma chamada QueryStatus, ela percorre o conjunto de itens selecionados (ou seja, as várias seleções expostas pelo serviço SVsShellMonitorSelection).

  3. Em cada item na seleção, a solução usa o ponteiro de hierarquia para chamar o método IsItemDirty e determinar se o comando de menu Salvar deve ser habilitado. Se um ou mais itens estiverem sujos, o comando Salvar estará habilitado. Se a hierarquia usar um editor padrão, a hierarquia delega a consulta de status sujo ao editor chamando o IsDocDataDirty método.

  4. Em cada item selecionado que está sujo, a solução usa o ponteiro de hierarquia para chamar o método SaveItem nas hierarquias apropriadas.

    É comum que a hierarquia use um editor padrão para editar o documento. Nesse caso, o objeto de dados do documento para esse editor deve dar suporte à IVsPersistDocData2 interface. Ao receber a chamada do método SaveItem, o projeto deve informar ao editor que o documento está sendo salvo ao chamar o método SaveDocData no objeto de dados do documento. O editor pode permitir que o ambiente manipule a caixa de diálogo Salvar como , chamando Query Service a SVsUIShell interface. Isso retorna um ponteiro para a IVsUIShell interface. Em seguida, o editor deve chamar o método SaveDocDataToFile, passando um ponteiro para a implementação do editor IPersistFileFormat por meio do parâmetro pPersistFile. Em seguida, o ambiente executa a operação Salvar e fornece a caixa de diálogo Salvar como para o editor. Em seguida, o ambiente contata o editor novamente com IPersistFileFormat.

  5. Se o usuário estiver tentando salvar um documento sem título (ou seja, um documento não salvo anteriormente), um comando Salvar como será realmente executado.

  6. Para o comando Salvar como, o ambiente exibe a caixa de diálogo Salvar como, solicitando ao usuário um nome de arquivo.

    Se o nome do arquivo tiver sido alterado, a hierarquia será responsável por atualizar as informações armazenadas em cache do quadro de documento chamando SetProperty(VSFPROPID_MkDocument).

    Se o comando Salvar como mover o local do documento e a hierarquia for sensível ao local do documento, a hierarquia será responsável por entregar a propriedade da janela de documento aberta para outra hierarquia. Por exemplo, isso ocorrerá se o projeto rastrear se o arquivo é um arquivo interno ou externo (Arquivo Diverso) em relação ao projeto. Use o procedimento a seguir para alterar a propriedade de um arquivo para o projeto Arquivos Diversos.

Alterando a propriedade do arquivo

Para alterar a propriedade do arquivo para o projeto Arquivos Diversos

  1. Serviço de Consulta para a SVsExternalFilesManager interface.

    Um ponteiro para o IVsExternalFilesManager2 é retornado.

  2. Chame o TransferDocument método (pszMkDocumentNew, punkWindowFrame) para transferir o documento para a nova hierarquia. A hierarquia que executa o comando Salvar como chama esse método.