Compartilhar via


Método IVsUIShell.CreateDocumentWindow (UInt32, String, IVsUIHierarchy, UInt32, IntPtr, IntPtr, Guid, String, Guid, IServiceProvider, String, String, Int32 , IVsWindowFrame)

 

Publicado: abril de 2016

Esse método cria uma janela de documento que contém a incorporação indicado pelo punkDocView parâmetro.

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

Sintaxe

int CreateDocumentWindow(
    uint grfCDW,
    string pszMkDocument,
    IVsUIHierarchy pUIH,
    uint itemid,
    IntPtr punkDocView,
    IntPtr punkDocData,
    [InAttribute] ref Guid rguidEditorType,
    string pszPhysicalView,
    [InAttribute] ref Guid rguidCmdUI,
    IServiceProvider psp,
    string pszOwnerCaption,
    string pszEditorCaption,
    int[] pfDefaultPosition,
    out IVsWindowFrame ppWindowFrame
)
int CreateDocumentWindow(
    unsigned int grfCDW,
    String^ pszMkDocument,
    IVsUIHierarchy^ pUIH,
    unsigned int itemid,
    IntPtr punkDocView,
    IntPtr punkDocData,
    [InAttribute] Guid% rguidEditorType,
    String^ pszPhysicalView,
    [InAttribute] Guid% rguidCmdUI,
    IServiceProvider^ psp,
    String^ pszOwnerCaption,
    String^ pszEditorCaption,
    array<int>^ pfDefaultPosition,
    [OutAttribute] IVsWindowFrame^% ppWindowFrame
)
abstract CreateDocumentWindow : 
        grfCDW:uint32 *
        pszMkDocument:string *
        pUIH:IVsUIHierarchy *
        itemid:uint32 *
        punkDocView:nativeint *
        punkDocData:nativeint *
        rguidEditorType:Guid byref *
        pszPhysicalView:string *
        rguidCmdUI:Guid byref *
        psp:IServiceProvider *
        pszOwnerCaption:string *
        pszEditorCaption:string *
        pfDefaultPosition:int[] *
        ppWindowFrame:IVsWindowFrame byref -> int
Function CreateDocumentWindow (
    grfCDW As UInteger,
    pszMkDocument As String,
    pUIH As IVsUIHierarchy,
    itemid As UInteger,
    punkDocView As IntPtr,
    punkDocData As IntPtr,
    <InAttribute> ByRef rguidEditorType As Guid,
    pszPhysicalView As String,
    <InAttribute> ByRef rguidCmdUI As Guid,
    psp As IServiceProvider,
    pszOwnerCaption As String,
    pszEditorCaption As String,
    pfDefaultPosition As Integer(),
    <OutAttribute> ByRef ppWindowFrame As IVsWindowFrame
) As Integer

Parâmetros

  • grfCDW
    [in] Sinalizadores cujos valores são obtidos a partir do __VSCREATEDOCWINDWORD.
  • pszMkDocument
    [in] Caminho para o documento.Esse caminho é usado pelo ambiente para registrar este modo de exibição na tabela de documento em execução (RDT).
  • pUIH
    [in] Ponteiro para o IVsHierarchy interface do item de hierarquia que contém este documento.
  • itemid
    [in] Identificador do item dentro da hierarquia correspondente a este documento.Valor é obtido a partir do VSITEMID enumeração.
  • punkDocView
    [in] Ponteiro para o IUnknown interface para o objeto de exibição de documento a ser exibido dentro desta janela.O objeto de exibição do documento pode ser um objeto de documento, como IOleDocument, um controle, como IOleObject ou IOleControl, ou em um ambiente simples incorporação, tais como IVsWindowPane.
  • punkDocData
    [in] Ponteiro para o IUnknown interface de um objeto que representa o objeto de dados de documento deste documento em situações onde não há separação de dados ou modo de exibição.Por exemplo, o editor de texto principal tem um objeto de exibição de texto (IVsTextView) e o objeto de buffer de texto (IVsTextBuffer).Esse parâmetro pode ser null.Passando null faz com que o ambiente para criar uma instância de uma implementação padrão da punkDocData em nome do chamador.
  • rguidEditorType
    [in] Identificador exclusivo da fábrica de editor que criou os objetos de dados de modo de exibição e o documento de uma instância do documento.Isso deve ser GUID_NULL se o documento não é construído utilizando uma fábrica de editor (ou seja, uma instância é criada com conhecimento particular de um projeto específico).
  • pszPhysicalView
    [in] Seqüência de caracteres para identificar o tipo de exibição física para o editor.Algumas fábricas de editor podem oferecer suporte a criação de vários tipos de visualização física.Por exemplo, é possível que uma fábrica de editor único oferecer suporte à criação de um modo de exibição designer gráfico (LOGVIEWID_Designer), bem como um modo de exibição de código textual (LOGVIEWID_Code).A fábrica de editor deve registrar informações no registro do sistema para o mapeamento entre tipos de exibição de lógica e física na subchave do registro LogicalViewMap.
  • rguidCmdUI
    [in] Indica qual conjunto de menus deve ser mesclado no menu principal da barra quando este documento estiver ativo.Esse tipo de mesclagem de menus é recomendável sobre menu OLE2 mesclando, que pode ser usada se esse parâmetro for GUID_NULL.O valor inicial deste parâmetro é retornado como um parâmetro [out] na CreateEditorInstance método.
  • psp
    [in] Ponteiro para o IServiceProvider interface.Can be null.Este é um provedor de serviço adicional fornecido pelo chamador (normalmente um projeto) tornando possível para o chamador fornecer contexto extra (por meio de serviços) para o editor incorporado.Assim, quando o objeto incorporado faz uma solicitação de serviço, o quadro tenta satisfazer a solicitação.Se o serviço não for fornecido pelo quadro, psp é tentado.Se o serviço não é encontrado, o provedor de serviços globais do ambiente é consultada.
  • pszOwnerCaption
    [in] Legenda inicial definida pelo proprietário do documento (ou seja, o projeto) da janela do documento.Isso costuma do formulário: "Nomedoprojeto – ItemName".
  • pszEditorCaption
    [in] Legenda inicial definida pelo editor do documento da janela do documento.Isso costuma ser uma seqüência de caracteres entre colchetes (por exemplo, [formulário]).O valor inicial deste parâmetro é retornado como um parâmetro [out] em que o IVsEditorFactory::CreateEditorInstance método.
  • pfDefaultPosition
    [out] Pode ser null se o chamador não desejar essas informações.trueSe o ambiente não tinha todas as informações salvas sobre a última posição desta janela de ferramenta (ou seja, guidPersistenceSlot não encontrado), portanto ele foi colocado em algum local padrão na tela.falseSe esta janela foi colocada onde o usuário última localizada e dimensionado a ele.
  • ppWindowFrame
    [out] Ponteiro para o quadro que contém este editor, que pode ser usado para manipular o local, tamanho, legenda e outras propriedades da janela.Também pode ser usado para obter o IUnknown ponteiro de interface da incorporar (ou seja, o punkDocView) ou o punkDocData.

Valor de retorno

Type: System.Int32

Se o método for bem-sucedido, ele retorna S_OK.Se ele falhar, ele retorna um código de erro.

Comentários

COM assinatura

De vsshell.idl:

HRESULT IVsUIShell::CreateDocumentWindow(
   [in] VSCREATEDOCWIN grfCDW,
   [in] LPCOLESTR pszMkDocument,
   [in] IVsUIHierarchy *pUIH,
   [in] VSITEMID itemid,
   [in] IUnknown *punkDocView,
   [in] IUnknown *punkDocData,
   [in] REFGUID rguidEditorType,
   [in] LPCOLESTR pszPhysicalView,
   [in] REFGUID rguidCmdUI,
   [in] IServiceProvider *pSP,
   [in] LPCOLESTR pszOwnerCaption,
   [in] LPCOLESTR pszEditorCaption,
   [out] BOOL *pfDefaultPosition,
   [out] IVsWindowFrame **ppWindowFrame
);

IVsUIShell.CreateDocumentWindowé uma rotina de baixo nível que é usada em cenários avançados.Este método não é normalmente chamado pela maioria dos clientes, que geralmente chama OpenStandardEditor ou OpenSpecificEditor para abrir um documento.Esses métodos chamam IVsUIShell.CreateDocumentWindow como parte de sua implementação.

Os seguintes itens estão associados a cada janela de documento:

O caminho do documento (pszMkDocument), que é registrado no RDT.

Um par de hierarquia/ItemID indicando o projeto ao qual o documento está associado.

O objeto de exibição exibido na área de cliente da janela (punkDocView).

Um objeto que representa os dados subjacentes sendo editados por este modo de exibição (punkDocData).

Implementado o ambiente IVsWindowFrame objeto é retornado por esse método.Use esse ponteiro para acessar o punkDocView, legenda, posicionar e assim por diante.Para obter uma lista completa das propriedades que podem ser acessados, consulte __VSFPROPID.

A legenda da janela de documento é gerenciada por três partes independentes, o proprietário do documento (geralmente o projeto), o editor e o ambiente.

Legenda do proprietário

Legenda do Editor

Legenda do ambiente

Legenda da janela de documento

"%1-% 2"

Onde

%1 = "Projeto1" e

%2 = "MyForm"

"[código]"

" :2"

"Projeto1 = MyForm [código]: 2"

"% 3"

Onde

%3 = "c:/.../mydir/mydoc.txt"

null

""

"c:/.../mydir/mydoc.txt"

Esse gerenciamento é realizado através do quadro da janela do documento de controle de pszOwnerCaption e pszEditorCaption propriedades da legenda.Essas cadeias de caracteres são uma concatenação da moldura da janela com quaisquer strings de ambiente que contribuíram.O pszOwnerCaption seqüência de caracteres pode ser definida usando uma seqüência de caracteres de formato sprintf para especificar onde as seqüências de DocumentAttribute devem ser substituídas automaticamente.A moldura da janela pode ouvir o OnAfterAttributeChange evento para saber quando atualizar esta legenda.As seguintes seqüências de DocumentAttribute são definidas:

%1 == Project name –

pHier->GetProperty(VSITEMID_ROOT, VSHPROPID_Name,...)

%2 == item name –

pHier->GetProperty(itemid, VSHPROPID_Name,...)

%3 == Document (file) name –

pHier->GetProperty(itemid, VSHPROPID_SaveName,...)

Se o OwnerCaption inclui uma seqüência de caracteres % #, em seguida, os monitores de moldura da janela do OnAfterAttributeChange evento e a hierarquia de OnPropertyChanged evento para controlar quando esses nomes são alterados.

Consulte também

Interface IVsUIShell
Namespace Microsoft.VisualStudio.Shell.Interop

Retornar ao topo