IVsEditorFactory.CreateEditorInstance(UInt32, String, String, IVsHierarchy, UInt32, IntPtr, IntPtr, IntPtr, String, Guid, Int32) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Usado pela arquitetura de fábrica do editor para criar editores que dão suporte à separação de dados/exibição.
public:
int CreateEditorInstance(System::UInt32 grfCreateDoc, System::String ^ pszMkDocument, System::String ^ pszPhysicalView, Microsoft::VisualStudio::Shell::Interop::IVsHierarchy ^ pvHier, System::UInt32 itemid, IntPtr punkDocDataExisting, [Runtime::InteropServices::Out] IntPtr % ppunkDocView, [Runtime::InteropServices::Out] IntPtr % ppunkDocData, [Runtime::InteropServices::Out] System::String ^ % pbstrEditorCaption, [Runtime::InteropServices::Out] Guid % pguidCmdUI, [Runtime::InteropServices::Out] int % pgrfCDW);
public int CreateEditorInstance (uint grfCreateDoc, string pszMkDocument, string pszPhysicalView, Microsoft.VisualStudio.Shell.Interop.IVsHierarchy pvHier, uint itemid, IntPtr punkDocDataExisting, out IntPtr ppunkDocView, out IntPtr ppunkDocData, out string pbstrEditorCaption, out Guid pguidCmdUI, out int pgrfCDW);
abstract member CreateEditorInstance : uint32 * string * string * Microsoft.VisualStudio.Shell.Interop.IVsHierarchy * uint32 * nativeint * nativeint * nativeint * string * Guid * int -> int
Public Function CreateEditorInstance (grfCreateDoc As UInteger, pszMkDocument As String, pszPhysicalView As String, pvHier As IVsHierarchy, itemid As UInteger, punkDocDataExisting As IntPtr, ByRef ppunkDocView As IntPtr, ByRef ppunkDocData As IntPtr, ByRef pbstrEditorCaption As String, ByRef pguidCmdUI As Guid, ByRef pgrfCDW As Integer) As Integer
Parâmetros
- grfCreateDoc
- UInt32
no Sinalizadores cujos valores são obtidos da __VSCREATEEDITORFLAGS enumeração que define as condições sob as quais criar o editor. Somente sinalizadores abertos e silenciosos são válidos.
- pszMkDocument
- String
no Forma de cadeia de caracteres do identificador do moniker do documento no sistema do projeto. No caso de documentos que são arquivos, esse é sempre o caminho para o arquivo. Esse parâmetro também pode ser usado para especificar documentos que não são arquivos. Por exemplo, em um projeto orientado a banco de dados, esse parâmetro pode conter uma cadeia de caracteres que se refere a registros em uma tabela.
- pszPhysicalView
- String
no Nome da exibição física. Consulte Comentários para obter detalhes.
- pvHier
- IVsHierarchy
no Ponteiro para a IVsHierarchy interface.
- itemid
- UInt32
no Identificador de item desta instância do editor.
- punkDocDataExisting
- IntPtr
no Deve ser o punkDocData objeto registrado na tabela de documentos em execução (Rdt). Esse parâmetro é usado para determinar se um buffer de documento ( DocData objeto) já foi criado. Quando uma fábrica de editor é solicitada a criar uma exibição secundária, esse parâmetro será não nulo, indicando que não há nenhum buffer de documento. Se o arquivo estiver aberto, retorne VS_E_INCOMPATIBLEDOCDATA e o ambiente pedirá ao usuário para fechá-lo.
- ppunkDocView
- IntPtr
fora Ponteiro para a IUnknown interface do DocView objeto. Retorna null se um editor externo existe, caso contrário, retorna a exibição do documento.
- ppunkDocData
- IntPtr
fora Ponteiro para a IUnknown interface do DocData objeto. Retorna o buffer do documento.
- pbstrEditorCaption
- String
fora Legenda inicial definida pelo editor de documento para a janela do documento. Normalmente, essa é uma cadeia de caracteres entre colchetes, como "[Form]". Esse valor é passado como um parâmetro de entrada para o CreateDocumentWindow(UInt32, String, IVsUIHierarchy, UInt32, IntPtr, IntPtr, Guid, String, Guid, IServiceProvider, String, String, Int32[], IVsWindowFrame) método. Se o arquivo for [ReadOnly], a legenda será definida durante a carga do arquivo.
- pguidCmdUI
- Guid
fora Retorna o GUID da interface do usuário do comando. Esse GUID está ativo quando este editor é ativado. Qualquer elemento de interface do usuário que esteja visível no editor deve usar esse GUID. Esse GUID é usado no arquivo. CTC na DLL satélite onde ele indica quais menus e barras de ferramentas devem ser exibidos quando o documento estiver ativo.
- pgrfCDW
- Int32
[out, retval] enumeração do tipo __VSEDITORCREATEDOCWIN . Esses sinalizadores são passados para CreateDocumentWindow(UInt32, String, IVsUIHierarchy, UInt32, IntPtr, IntPtr, Guid, String, Guid, IServiceProvider, String, String, Int32[], IVsWindowFrame) .
Retornos
Se o documento tiver um formato que não pode ser aberto no editor, VS_E_UNSUPPORTEDFORMAT será retornado. Se o documento estiver aberto em um editor incompatível (ou E_NOINTERFACE ), VS_E_INCOMPATIBLEDOCDATA será retornado. Se o arquivo não puder ser aberto por qualquer outro motivo, será retornado outro código de erro HRESULT.
Comentários
Assinatura COM
De VSShell. idl:
HRESULT IVsEditorFactory::CreateEditorInstance(
[in] VSCREATEEDITORFLAGS grfCreateDoc,
[in] LPCOLESTR pszMkDocument,
[in] LPCOLESTR pszPhysicalView,
[in] IVsHierarchy *pvHier,
[in] VSITEMID itemid,
[in] IUnknown *punkDocDataExisting,
[out] IUnknown **ppunkDocView,
[out] IUnknown **ppunkDocData,
[out] BSTR *pbstrEditorCaption,
[out] GUID *pguidCmdUI,
[out, retval] VSEDITORCREATEDOCWIN *pgrfCDW
);
IVsEditorFactory.CreateEditorInstance é chamado pelo ambiente em resposta a um sistema de projeto que chama as OpenStandardEditor OpenSpecificEditor funções auxiliares ou em sua OpenItem implementação de método. No caso do OpenStandardEditor , o ambiente determina primeiro a fábrica do editor com a prioridade mais alta para abrir o arquivo e, em seguida, chama IVsEditorFactory.CreateEditorInstance. se o ambiente não pode criar uma instância dos dados do documento nesse editor, ele encontrará o editor com a próxima prioridade mais alta e tentará assim mesmo. Você pode retornar o seguinte para sua fábrica de editor para dar suporte a esse loop:
VS_E_UNSUPPORTEDFORMAT permite que o loop continue sem fechar o documento se ele estiver aberto no momento.
Retorne esse valor se os dados do documento fornecidos para a fábrica do editor não forem compatíveis com a fábrica do editor. Você pode determinar se os dados do documento são compatíveis chamando QueryInterface o objeto de dados do documento para o conjunto de interfaces que você precisa. Nesse caso, o usuário não será solicitado a fechar o arquivo.VS_E_INCOMPATIBLEDOCDATA pergunta se o documento aberto deve ser fechado. Qualquer outro retorno impedirá que o loop continue.
Retorne esse valor se os dados do documento fornecidos para a fábrica do editor não forem compatíveis com a fábrica do editor. Você pode determinar se os dados do documento são compatíveis chamando QueryInterface o objeto de dados do documento para o conjunto de interfaces que você precisa. Esse valor também será retornado se a fábrica do editor der suporte apenas a uma exibição única nos dados do documento, porque nesse caso, os dados do documento já estão abertos com outra exibição. Retornar esse valor faz com que o ambiente solicite ao usuário que feche o arquivo no outro editor e permita que ele seja aberto em seu editor.
Observação
Se o seu editor instanciar os dados do documento e a exibição do documento no mesmo objeto, o editor só poderá dar suporte à abertura de uma única exibição para uma instância dos dados do documento. Como resultado, se você for solicitado a abrir dados de documento já instanciados em outro editor ou até mesmo ao editor, não será possível dar suporte ao fornecimento de outra exibição e deve retornar esse valor.
Se o objeto de dados de documento referenciado por ppunkDocData oferecer suporte IOleCommandTarget , o objeto será incluído na cadeia de roteamento de comando do ambiente depois que o comando for roteado para o objeto ativo referenciado pelo ppunkDocView .
A cadeia de caracteres de exibição física pszPhysicalView é fornecida pelo MapLogicalView ou é encontrada no registro sob a chave do editor apropriada no formato: HKLM\Software\Microsoft\VisualStudio\8.0\Editors \<GUID do editor > \LogicalViews \<GUID da exibição lógica > .