如何在菜单栏和上下文菜单中添加按钮

时间:2014-09-13 15:52:34

标签: visual-studio c++-cli contextmenu menubar visual-studio-addins

我必须为Visual Studio制作一个“通用搜索引擎”扩展。我知道加载项扩展与VS 2013不兼容,但我找到了有关如何将其更改为VSPackage的信息。

到目前为止,我所知道的每件事都要归功于“Visual-Studio-Add-Ins-Succinctly”这本书

问题是我必须用C ++编写扩展,文档很少。这也是我的第一个真正的项目,所以我不太了解Add-in和VSPackage。

我的导师提出的第一步是:

  • 在文件,编辑,查看,工具...
  • 旁边的“菜单栏”中添加一个按钮
  • 在“剪切,复制,粘贴
  • 旁边的”上下文菜单“中添加一个按钮
  • 单击其中一个按钮时打开新选项卡(窗口)

我找到了在工具栏中添加按钮的代码(它是自动生成的)

        String ^toolsMenuName = "Tools";

        _CommandBars ^commandBars = dynamic_cast<CommandBars^>(_applicationObject->CommandBars);
        CommandBar ^menuBarCommandBar = dynamic_cast<CommandBar^>(commandBars["MenuBar"]);

        CommandBarControl ^toolsControl = menuBarCommandBar->Controls[toolsMenuName];
        CommandBarPopup ^toolsPopup = dynamic_cast<CommandBarPopup^>(toolsControl);

        try
        {   
            Command ^command = commands->AddNamedCommand2(_addInInstance, "MyAddin", "MyAddin", "Executes the command for MyAddin", true, 69, contextGUIDs, (int)vsCommandStatus::vsCommandStatusSupported+(int)vsCommandStatus::vsCommandStatusEnabled, (int)vsCommandStyle::vsCommandStylePictAndText, vsCommandControlType::vsCommandControlTypeButton);

            if((command) && (toolsPopup))
            {
                command->AddControl(toolsPopup->CommandBar, 1);
            }
        }
        catch(System::ArgumentException ^){}

但我无法找到有关如何更改加载项按钮位置或在上下文菜单中添加它的任何信息。

此外,我不知道如何调用新标签(窗口)。我不认为在这个步骤(窗口)会做什么这一步很重要,我现在必须打开它。

如果有人可以帮我解决这个问题,那将会很有帮助。

如果有人可以告诉我一本用C ++语言编写的很多问题的好书或网站,我愿意再次使用VSPackage。

1 个答案:

答案 0 :(得分:0)

VS包/扩展是要走的路,绝对不是加载项,因为它已被弃用。我不会想到很多关于C ++中的可扩展性的文章,但是你不应该有从C#转换的问题。对于示例和教程,我推荐Carlos Quintero的Visual Studio Extensibility (VSX)网站。