Método IVsEditorFactory.CreateEditorInstance (UInt32, String, String, IVsHierarchy, UInt32, IntPtr, IntPtr, IntPtr, String, Guid, Int32)

 

Usado pela arquitetura de fábrica de editor para criar editores que oferecem suporte a separação/modo de exibição de dados.

Namespace:   Microsoft.VisualStudio.Shell.Interop
Assembly:  Microsoft.VisualStudio.Shell.Interop (em Microsoft.VisualStudio.Shell.Interop.dll)

Sintaxe

int CreateEditorInstance(
    uint grfCreateDoc,
    string pszMkDocument,
    string pszPhysicalView,
    IVsHierarchy pvHier,
    uint itemid,
    IntPtr punkDocDataExisting,
    out IntPtr ppunkDocView,
    out IntPtr ppunkDocData,
    out string pbstrEditorCaption,
    out Guid pguidCmdUI,
    out int pgrfCDW
)
int CreateEditorInstance(
    unsigned int grfCreateDoc,
    String^ pszMkDocument,
    String^ pszPhysicalView,
    IVsHierarchy^ pvHier,
    unsigned int itemid,
    IntPtr punkDocDataExisting,
    [OutAttribute] IntPtr% ppunkDocView,
    [OutAttribute] IntPtr% ppunkDocData,
    [OutAttribute] String^% pbstrEditorCaption,
    [OutAttribute] Guid% pguidCmdUI,
    [OutAttribute] int% pgrfCDW
)
abstract CreateEditorInstance : 
        grfCreateDoc:uint32 *
        pszMkDocument:string *
        pszPhysicalView:string *
        pvHier:IVsHierarchy *
        itemid:uint32 *
        punkDocDataExisting:nativeint *
        ppunkDocView:nativeint byref *
        ppunkDocData:nativeint byref *
        pbstrEditorCaption:string byref *
        pguidCmdUI:Guid byref *
        pgrfCDW:int byref -> int
Function CreateEditorInstance (
    grfCreateDoc As UInteger,
    pszMkDocument As String,
    pszPhysicalView As String,
    pvHier As IVsHierarchy,
    itemid As UInteger,
    punkDocDataExisting As IntPtr,
    <OutAttribute> ByRef ppunkDocView As IntPtr,
    <OutAttribute> ByRef ppunkDocData As IntPtr,
    <OutAttribute> ByRef pbstrEditorCaption As String,
    <OutAttribute> ByRef pguidCmdUI As Guid,
    <OutAttribute> ByRef pgrfCDW As Integer
) As Integer

Parâmetros

  • grfCreateDoc
    [in] Sinalizadores cujos valores são obtidos a partir do __VSCREATEEDITORFLAGS enumeração que define as condições sob as quais criar o editor.Somente abertos e silenciosas sinalizadores são válidos.
  • pszMkDocument
    [in] Formulário do identificador do identificador de origem do documento em seqüência no sistema de projeto.No caso de documentos que são arquivos, isso é sempre o caminho para o arquivo.Este parâmetro também pode ser usado para especificar os documentos que não são arquivos.Por exemplo, em um projeto orientado a banco de dados, este parâmetro pode conter uma seqüência de caracteres que se refere a registros em uma tabela.
  • pszPhysicalView
    [in] Nome do modo de exibição físico.Consulte os comentários para obter detalhes.
  • itemid
    [in] Identificador de item desta instância do editor.
  • punkDocDataExisting
    [in] Deve ser a punkDocData o objeto que está registrado na tabela de documento em execução (RDT).Este parâmetro é usado para determinar se um buffer de documento (DocData objeto) já foi criado.Quando uma fábrica de editor é solicitada para criar um modo de exibição secundário, este parâmetro será indicando que não há nenhum buffer de documento não-nulo.Se o arquivo estiver aberto, o retorno de VS_E_INCOMPATIBLEDOCDATA e o ambiente serão ao usuário para fechá-la.
  • ppunkDocView
    [out] Ponteiro para o IUnknown interface para o DocView objeto.Retorna null se existir em um editor externo, caso contrário retorna o modo de exibição do documento.
  • ppunkDocData
    [out] Ponteiro para o IUnknown interface para o DocData objeto.Retorna o buffer para o documento.
  • pbstrEditorCaption
    [out] Legenda inicial definida pelo editor do documento da janela do documento.Isso costuma ser uma seqüência de caracteres entre colchetes, como "[formulário]".Esse valor é passado como um parâmetro de entrada para o CreateDocumentWindow método.Se o arquivo [somente leitura] a legenda será definida durante o carregamento do arquivo.
  • pguidCmdUI
    [out] Retorna o GUID da interface do usuário de comando.Esse GUID está ativo quando este editor é ativado.Qualquer elemento de interface do usuário que está visível no editor deve usar esse GUID.Esse GUID é usado no arquivo .ctc no satélite DLL onde indica quais menus e barras de ferramentas devem ser exibidas quando o documento estiver ativo.

Valor de retorno

Type: System.Int32

Se o documento tem um formato que não pode ser aberto no editor, VS_E_UNSUPPORTEDFORMAT é retornado.

Se o documento for aberto em um editor incompatível (ou E_NOINTERFACE), VS_E_INCOMPATIBLEDOCDATA é retornado.

Se o arquivo não pôde ser aberto por qualquer outro motivo, outro código de erro HRESULT é retornado.

Comentários

COM assinatura

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 projetos chamando qualquer um o OpenStandardEditor ou OpenSpecificEditor auxiliar funciona no seu OpenItem implementação do método.No caso de OpenStandardEditor, o ambiente determina primeiro a fábrica de editor com a prioridade mais alta para abrir o arquivo e, em seguida, chama IVsEditorFactory.CreateEditorInstance. se o ambiente é não é possível instanciar os dados dos documentos nesse editor, encontrará o editor com a próxima prioridade mais alta e tentar mesmo assim ou coisa.Você pode retornar as seguintes informações para sua fábrica de editor oferecer suporte a este loop:

VS_E_UNSUPPORTEDFORMATpermite que o loop continue sem fechar o documento se ele estiver aberto no momento.

Retorne esse valor se os dados dos documentos fornecidos para sua fábrica de editor não não compatíveis com sua fábrica de editor.Você pode determinar se os dados dos documentos são compatíveis, chamando QueryInterface no objeto de documento de dados para o conjunto de interfaces que você precisa.Nesse caso, o usuário não precisará fechar o arquivo.VS_E_INCOMPATIBLEDOCDATA pergunta se o documento aberto deverá ser fechado.Qualquer outro tipo de retorno interromperá o loop de continuar.

Retorne esse valor se os dados dos documentos fornecidos para sua fábrica de editor não não compatíveis com sua fábrica de editor.Você pode determinar se os dados dos documentos são compatíveis, chamando QueryInterface no objeto de documento de dados para o conjunto de interfaces que você precisa.Esse valor também é retornado se a sua fábrica de editor só oferece suporte a um único modo de exibição nos dados de documento, porque nesse caso, os dados do documento estão abertos com outro modo de exibição.Retornar esse valor faz com que o ambiente solicitar que o usuário fechar o arquivo no editor de e permitir que ele seja aberto no editor.

System_CAPS_noteObservação

Se o seu editor instancia os dados de documento e o modo de exibição de documentos no mesmo objeto, em seguida, seu editor só pode suportar a abertura de um único modo de exibição para uma instância dos dados do documento.Como resultado, se você for solicitado a abrir dados de documento que já são instanciados em outro editor, ou até mesmo seu editor, você não conseguir fornecer outro modo de exibição e deve retornar esse valor.

Se o objeto de dados do documento referenciado por ppunkDocData oferece suporte a IOleCommandTarget, o objeto está incluído na cadeia de roteamento de comando do ambiente depois que o comando é roteado para o objeto ativo, referenciado por ppunkDocView.

A seqüência de caracteres de exibição física pszPhysicalView seja fornecido pelo MapLogicalView ou é encontrado no registro sob a chave de editor apropriado do formulário: HKLM\SOFTWARE\Microsoft\VisualStudio\8.0\Editors\ < guid do editor > \LogicalViews\ < guid do modo de exibição lógico >.

Consulte também

Interface IVsEditorFactory
Namespace Microsoft.VisualStudio.Shell.Interop

Retornar ao topo