Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste passo a passo, você aprenderá a criar uma janela de ferramentas e integrá-la ao Visual Studio das seguintes maneiras:
Adicione um controle à janela de ferramentas.
Adicione uma barra de ferramentas a uma janela de ferramentas.
Adicione um comando à barra de ferramentas.
Implemente os comandos.
Defina a posição padrão para a janela de ferramentas.
Pré-requisitos
O SDK do Visual Studio está incluído como um recurso opcional na instalação do Visual Studio. Para obter mais informações, consulte Instalar o SDK do Visual Studio.
Criar uma janela de ferramentas
Crie um projeto chamado FirstToolWindow usando o modelo VSIX e adicione um modelo de item de janela de ferramenta personalizado chamado FirstToolWindow.
Nota
Para obter mais informações sobre como criar uma extensão com uma janela de ferramentas, consulte Criar uma extensão com uma janela de ferramenta.
Adicionar um controle à janela de ferramentas
Remova o controle padrão. Abra FirstToolWindowControl.xaml e exclua o botão Clique em Mim!.
Na Caixa de Ferramentas, expanda a seção Todos os Controles do WPF e arraste o controle Elemento de Mídia para o formulário FirstToolWindowControl. Selecione o controle e, na janela de Propriedades , nomeie este elemento mediaElement1.
Adicionar uma barra de ferramentas à janela de ferramentas
Ao adicionar uma barra de ferramentas da maneira a seguir, você garante que seus gradientes e cores sejam consistentes com o restante do IDE.
No Gerenciador de Soluções, abra FirstToolWindowPackage.vsct. O arquivo .vsct define os elementos de GUI (interface gráfica do usuário) na janela de ferramentas usando XML.
Na seção
<Symbols>, localize o nó<GuidSymbol>cujo atributonameéguidFirstToolWindowPackageCmdSet. Adicione os dois elementos<IDSymbol>a seguir à lista de elementos<IDSymbol>neste nó para definir uma barra de ferramentas e um grupo de barras de ferramentas.<IDSymbol name="ToolbarID" value="0x1000" /> <IDSymbol name="ToolbarGroupID" value="0x1001" />Logo acima da seção
<Buttons>, crie uma seção de<Menus>semelhante a esta:<Menus> <Menu guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" priority="0x0000" type="ToolWindowToolbar"> <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" /> <Strings> <ButtonText>Tool Window Toolbar</ButtonText> <CommandName>Tool Window Toolbar</CommandName> </Strings> </Menu> </Menus>Há vários tipos diferentes de menu. Esse menu é uma barra de ferramentas em uma janela de ferramentas, definida por seu atributo
type. As configurações deguideidcompõem a ID totalmente qualificada da barra de ferramentas. Normalmente, o<Parent>de um menu é o grupo delimitador. No entanto, uma barra de ferramentas é definida como seu próprio pai. Portanto, o mesmo identificador é usado para os elementos<Menu>e<Parent>. O atributopriorityé apenas '0'.As barras de ferramentas se assemelham a menus de várias maneiras. Por exemplo, assim como um menu pode ter grupos de comandos, as barras de ferramentas também podem ter grupos. (Nos menus, os grupos de comandos são separados por linhas horizontais. Nas barras de ferramentas, os grupos não são separados por divisores visuais.)
Adicione uma seção
<Groups>que contém um elemento<Group>. Isso define o grupo cuja ID você declarou na seção<Symbols>. Adicione a seção<Groups>logo após a seção<Menus>.<Groups> <Group guid="guidFirstToolWindowPackageCmdSet" id="ToolbarGroupID" priority="0x0000"> <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" /> </Group> </Groups>Ao definir o GUID pai e a ID para o GUID e a ID da barra de ferramentas, você adicionará o grupo à barra de ferramentas.
Adicionar um comando à barra de ferramentas
Adicione um comando à barra de ferramentas, que é exibida como um botão.
Na seção
<Symbols>, declare os seguintes elementos IDSymbol logo após as declarações da barra de ferramentas e do grupo de barras de ferramentas.<IDSymbol name="cmdidWindowsMedia" value="0x0100" /> <IDSymbol name="cmdidWindowsMediaOpen" value="0x132" />Adicione um elemento Button dentro da seção
<Buttons>. Esse elemento será exibido na barra de ferramentas na janela de ferramentas, com um ícone de Pesquisa (lupa).<Button guid="guidFirstToolWindowPackageCmdSet" id="cmdidWindowsMediaOpen" priority="0x0101" type="Button"> <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarGroupID"/> <Icon guid="guidImages" id="bmpPicSearch" /> <Strings> <CommandName>cmdidWindowsMediaOpen</CommandName> <ButtonText>Load File</ButtonText> </Strings> </Button>Abra FirstToolWindowCommand.cs e adicione as linhas a seguir na classe logo após os campos existentes.
public const string guidFirstToolWindowPackageCmdSet = "00000000-0000-0000-0000-0000"; // get the GUID from the .vsct file public const uint cmdidWindowsMedia = 0x100; public const int cmdidWindowsMediaOpen = 0x132; public const int ToolbarID = 0x1000;Essa ação torna seus comandos disponíveis no código.
Adicionar uma propriedade MediaPlayer ao FirstToolWindowControl
Nos manipuladores de eventos para os controles da barra de ferramentas, o seu código deve ter a capacidade de acessar o controle Media Player, que é filho da classe FirstToolWindowControl.
No Gerenciador de Soluções, clique com o botão direito do mouse em FirstToolWindowControl.xaml, clique em Exibir Códigoe adicione o seguinte código à classe FirstToolWindowControl.
public System.Windows.Controls.MediaElement MediaPlayer
{
get { return mediaElement1; }
}
Instanciar a janela de ferramentas e a barra de ferramentas
Adicione uma barra de ferramentas e um comando de menu que invoca a caixa de diálogo Abrir Arquivo e reproduza o arquivo de mídia selecionado.
Abra FirstToolWindow.cs e adicione as seguintes diretivas de
using:using System.ComponentModel.Design; using System.Windows.Forms; using Microsoft.VisualStudio.Shell.Interop;Dentro da classe FirstToolWindow, adicione uma referência pública ao controle FirstToolWindowControl.
public FirstToolWindowControl control;No final do construtor, defina essa variável de controle para o controle recém-criado.
control = new FirstToolWindowControl(); base.Content = control;Instancie a barra de ferramentas dentro do construtor.
this.ToolBar = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet), FirstToolWindowCommand.ToolbarID); this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;Neste ponto, o construtor FirstToolWindow deve ter esta aparência:
public FirstToolWindow() : base(null) { this.Caption = "FirstToolWindow"; this.BitmapResourceID = 301; this.BitmapIndex = 1; control = new FirstToolWindowControl(); base.Content = control; this.ToolBar = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet), FirstToolWindowCommand.ToolbarID); this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP; }Adicione o comando de menu à barra de ferramentas. Na classe FirstToolWindowCommand.cs, adicione o seguinte usando a diretiva:
using System.Windows.Forms;Na classe FirstToolWindowCommand, adicione o seguinte código ao final do método ShowToolWindow(). O comando ButtonHandler será implementado na próxima seção.
// Create the handles for the toolbar command. var mcs = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; var toolbarbtnCmdID = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet), FirstToolWindowCommand.cmdidWindowsMediaOpen); var menuItem = new MenuCommand(new EventHandler( ButtonHandler), toolbarbtnCmdID); mcs.AddCommand(menuItem);
Para implementar um comando de menu na janela de ferramentas
Na classe FirstToolWindowCommand, adicione um método ButtonHandler que invoca a caixa de diálogo Abrir Arquivo. Quando um arquivo é selecionado, ele reproduz o arquivo de mídia.
Na classe FirstToolWindowCommand, adicione uma referência privada à janela FirstToolWindow que é criada no método FindToolWindow().
private FirstToolWindow window;Altere o método ShowToolWindow() para definir a janela que você definiu acima (para que o manipulador de comandos ButtonHandler possa acessar o controle de janela. Aqui está o método ShowToolWindow() completo.
private void ShowToolWindow(object sender, EventArgs e) { window = (FirstToolWindow) this.package.FindToolWindow(typeof(FirstToolWindow), 0, true); if ((null == window) || (null == window.Frame)) { throw new NotSupportedException("Cannot create tool window"); } IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame; Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show()); var mcs = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; var toolbarbtnCmdID = new CommandID(new Guid(FirstToolWindowCommandguidFirstToolWindowPackageCmdSet), FirstToolWindowCommand.cmdidWindowsMediaOpen); var menuItem = new MenuCommand(new EventHandler( ButtonHandler), toolbarbtnCmdID); mcs.AddCommand(menuItem); }Adicione o método ButtonHandler. Ele cria um OpenFileDialog para o usuário especificar o arquivo de mídia a ser reproduzido e, em seguida, reproduz o arquivo selecionado.
private void ButtonHandler(object sender, EventArgs arguments) { OpenFileDialog openFileDialog = new OpenFileDialog(); DialogResult result = openFileDialog.ShowDialog(); if (result == DialogResult.OK) { window.control.MediaPlayer.Source = new System.Uri(openFileDialog.FileName); } }
Definir a posição padrão para a janela de ferramentas
Em seguida, especifique um local padrão no IDE para a janela de ferramentas. As informações de configuração da janela de ferramentas estão no arquivo FirstToolWindowPackage.cs.
Em FirstToolWindowPackage.cs, localize o atributo ProvideToolWindowAttribute na classe
FirstToolWindowPackage, que passa o tipo FirstToolWindow para o construtor. Para especificar uma posição padrão, você deve adicionar mais parâmetros ao construtor conforme o exemplo a seguir.[ProvideToolWindow(typeof(FirstToolWindow), Style = Microsoft.VisualStudio.Shell.VsDockStyle.Tabbed, Window = "3ae79031-e1bc-11d0-8f78-00a0c9110057")]O primeiro parâmetro nomeado é
Stylee seu valor éTabbed, o que significa que a janela será uma guia em uma janela existente. A posição de encaixe é especificada pelo parâmetroWindow, neste caso, o GUID do Gerenciador de Soluções.Nota
Para obter mais informações sobre os tipos de janelas no IDE, consulte vsWindowType.
Testar a janela de ferramentas
Pressione F5 para abrir uma nova instância do build experimental do Visual Studio.
No menu Exibir, aponte para Outras Janelas e, em seguida, clique em Primeira Janela de Ferramenta.
A janela de ferramentas do player de mídia deve ser aberta na mesma posição que o Gerenciador de Soluções. Se ele ainda aparecer na mesma posição de antes, redefina o layout da janela (Janela/Redefinir Layout da Janela).
Clique no botão (ele tem o ícone Pesquisar) na janela de ferramentas. Selecione um arquivo de som ou vídeo com suporte, por exemplo, C:\windows\media\chimes.wave pressione Abrir.
Você deve ouvir o som do sino.