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 seguinte processo.
Manipulação de comandos Salvar, Salvar como e Salvar tudo para um editor personalizado
Esse processo é detalhado nas seguintes etapas:
Para os comandos Salvar e Salvar como, o ambiente usa o SVsShellMonitorSelection serviço para determinar a janela do documento ativo e, portanto, quais itens devem ser salvos. Depois que a janela do documento ativo é 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, consulte Executando tabela de documentos.
Para o 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 QueryStatus chamada, ela itera pelo conjunto de itens selecionados (ou seja, as várias seleções expostas pelo SVsShellMonitorSelection serviço).
Em cada item da seleção, a solução usa o ponteiro de hierarquia para chamar o método para determinar se o IsItemDirty 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 delegará a consulta de status sujo ao editor chamando o IsDocDataDirty método.
Em cada item selecionado que está sujo, a solução usa o ponteiro de hierarquia para chamar o SaveItem método 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
Se você implementar sua própria persistência, certifique-se de chamar o QuerySaveFiles método para economizar tempo. Esse método verifica se é seguro salvar o arquivo (por exemplo, o arquivo não é somente leitura).