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.

Customer Editor Save Manipulação de comandos Salvar, Salvar como e Salvar tudo para um editor personalizado

Esse processo é detalhado nas seguintes etapas:

  1. 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.

  2. 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).

  3. 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.

  4. 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).