Suporte a vários modos de exibição de documento
Você pode fornecer mais de uma exibição de um documento, criando dados de documento separado e objetos de exibição do documento para o seu editor. Estes são alguns casos em que um modo de exibição de documentos adicionais seria útil:
Novo suporte de janela: você deseja que seu editor de dois ou mais modos de exibição do mesmo tipo, para que um usuário que já tem uma janela Abrir no editor possa abrir uma nova janela, selecionando o Nova janela comando o janela menu.
Exibir o formulário e o código de suporte: você deseja que o seu editor para fornecer exibições de tipos diferentes. Visual Basic, por exemplo, fornece um modo de exibição de formulário e de um modo de exibição de código.
Para obter mais informações sobre esse assunto, consulte o procedimento de CreateEditorInstance no arquivo EditorFactory.cs no projeto editor personalizado criado pelo modelo de pacote de Visual Studio. Para obter mais informações sobre esse projeto, consulte Passo a passo: Criando um Editor personalizado.
Sincronizando modos de exibição
Quando você implementa vários modos de exibição, o objeto de dados do documento é responsável por manter sincronizados com os dados de todos os modos. Você pode usar o evento que lidar com interfaces em VsTextBuffer para sincronizar vários modos de exibição com os dados.
Se você não usar o VsTextBuffer o objeto para sincronizar vários modos de exibição, em seguida, você deve implementar seu próprio sistema de eventos para manipular as alterações feitas no objeto de dados do documento. Você pode usar diferentes níveis de granularidade para manter vários modos de exibição atualizado. Com uma configuração de granularidade máxima, conforme você digita em um modo de exibição outros modos de exibição são atualizados imediatamente. Com granularidade mínima, outros modos de exibição não serão atualizados até que eles são ativados.
Determinar se dados do documento é aberto já
A tabela de documentos (RDT) em execução no ambiente de desenvolvimento integrado (IDE) ajuda a controlar se os dados para um documento já estiver abertos, como mostrado no diagrama a seguir.
Vários modos de exibição
Por padrão, cada modo de exibição (objeto de exibição de documento) está contido em seu próprio quadro de janela (IVsWindowFrame). Como já foi observado, no entanto, os dados de documento podem ser exibidos em vários modos de exibição. Para permitir isso, a Visual Studio verifica a RDT para determinar se o documento em questão já está aberto em um editor. Quando o IDE chama CreateEditorInstance para criar o editor, um valor não nulo retornado na punkDocDataExisting parâmetro indica que o documento já está aberto em outro editor. Para obter mais informações sobre como as funções RDT, consulte Tabela de documentos em execução.
No seu IVsEditorFactory implementação, examine o objeto de dados de documento retornado em punkDocDataExisting para determinar se os dados do documento são apropriados para o seu editor. (Por exemplo, somente os dados HTML devem ser exibidos por um editor de HTML.) Se for o caso, sua fábrica de editor deve fornecer um segundo modo de exibição para os dados. Se a punkDocDataExisting parâmetro não é NULL, é possível ou que o objeto de dados do documento é aberto em outro editor, ou, mais provável, que os dados do documento já estão abertos em um modo de exibição diferente com o mesmo editor. Se os dados do documento estiverem abertos em um editor diferente que não oferece suporte a sua fábrica de editor, em seguida, Visual Studio Falha ao abrir sua fábrica de editor. Para obter mais informações, consulte Como: anexar os modos de exibição para dados do documento.