Salvando um documento personalizado
O ambiente manipula os comandos Salvar, Salvar Como e Salvar Tudo. Quando um usuário clica em Salvar, Salvar Como ou Salvar Tudo no menu Arquivo ou fecha a solução, resultando em um Salvar tudo, ocorre o processo a seguir.
Manipulação de comandos Salvar, Salvar Como e Salvar Tudo para um editor personalizado
Esse processo é detalhado nas seguintes etapas:
Nos comandos Salvar e Salvar Como, o ambiente usa o serviço SVsShellMonitorSelection para determinar a janela do documento ativo e, portanto, quais itens devem ser salvos. Assim que a janela do documento ativo for conhecida, o ambiente localiza o ponteiro da hierarquia e o identificador de item (itemID) do documento na tabela de documentos em execução. Para obter mais informações, confira a Tabela de documento em execução.
No comando Salvar Tudo, o ambiente usa as informações na tabela de documentos em execução para compilar a lista de todos os itens a serem salvos.
Quando a solução recebe uma chamada de QueryStatus, ela itera pelo conjunto de itens selecionados (ou seja, as seleções múltiplas expostas pelo serviço SVsShellMonitorSelection).
Em cada item da 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 é habilitado. Se a hierarquia usar um editor padrão, ela delega a consulta de status sujo ao editor chamando o método IsDocDataDirty.
Em cada item selecionado que estiver sujo, a solução usa o ponteiro de hierarquia para chamar o método SaveItem nas hierarquias apropriadas.
No caso de um editor personalizado, a comunicação entre o objeto de dados do documento e o projeto é privada. Assim, quaisquer preocupações especiais de persistência são tratadas entre esses dois objetos.
Observação
Caso implemente sua própria persistência, certifique-se de chamar o método QuerySaveFiles para economizar tempo. Esse método verifica se é seguro salvar o arquivo (por exemplo, o arquivo não é somente leitura).