代码之家  ›  专栏  ›  技术社区  ›  David Basarab

如何使用vsx创建带有命令的子菜单?

  •  5
  • David Basarab  · 技术社区  · 15 年前

    我已经创建了以下vsct文件xml。

    <?xml version="1.0" encoding="utf-8"?>
    <CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <Extern href="stdidcmd.h"/>
        <Extern href="vsshlids.h"/>
        <Extern href="msobtnid.h"/>
        <Commands package="guidMyVSXCommandsPkg">
            <Menus>
                <Menu guid="guidMyVSXCommandsCmdSet" id="TopLevelMenu" priority="0x100" type="Menu">
                    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>
                    <Strings>
                        <MenuText>Work???</MenuText>
                        <ButtonText>FigureMain</ButtonText>
                        <CommandName>TryMainMenu</CommandName>
                    </Strings>
                </Menu>
            </Menus>
            <Groups>
                <Group guid="guidMyVSXCommandsCmdSet" id="TopLevelMenuGroup" priority="0x0600">
                    <Parent guid="guidMyVSXCommandsCmdSet" id="TopLevelMenu"/>
                </Group>
            </Groups>
            <Buttons>
                <Button guid="guidMyVSXCommandsCmdSet" id="cmdidMyCommand" priority="0x0100" type="Button">
                    <Parent guid="guidMyVSXCommandsCmdSet" id="TopLevelMenuGroup" />
                    <Icon guid="guidImages" id="bmpPic1" />
                    <Strings>
                        <CommandName>cmdidMyCommand</CommandName>
                        <ButtonText>DO SOMETHING REAL COOL!!!!!!!!</ButtonText>
                    </Strings>
                </Button>
            </Buttons>
            <Bitmaps>
                <Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>
            </Bitmaps>
        </Commands>
        <Symbols>
            <!-- This is the package guid. -->
            <GuidSymbol name="guidMyVSXCommandsPkg" value="{70e6574c-ebed-4856-b78b-0927966cc800}" />
    
            <!-- This is the guid used to group the menu commands together -->
            <GuidSymbol name="guidMyVSXCommandsCmdSet" value="{301c910a-65eb-42c4-bf0f-bc5aaac737f1}">
                <IDSymbol name="TopLevelMenu" value="0x0100" />
                <IDSymbol name="TopLevelMenuGroup" value="0x0200" />
                <IDSymbol name="cmdidMyCommand" value="0x0300" />
            </GuidSymbol>
            <GuidSymbol name="guidImages" value="{1997bf57-349c-434a-ad64-32a3a65e35f3}" >
                <IDSymbol name="bmpPic1" value="1" />
                <IDSymbol name="bmpPic2" value="2" />
                <IDSymbol name="bmpPicSearch" value="3" />
                <IDSymbol name="bmpPicX" value="4" />
                <IDSymbol name="bmpPicArrows" value="5" />
            </GuidSymbol>
        </Symbols>
    
    </CommandTable>
    

    工作--&燃气轮机;做些真正酷的事!!!!!!!!

    1 回复  |  直到 15 年前
        1
  •  13
  •   Aaron Marten    15 年前

    您的菜单应该将其父菜单设置为 而不是顶级上下文菜单。例如,尝试更改此行:

    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>
    

    到这行:

    <Parent guid="guidSHLMainMenu" id="IDG_VS_CTXT_PROJECT_START"/>
    

    或者,通过查看SharedCmdPlace.vsct并查找具有以下父级的组元素,您可以发现其他现有组是什么(除了IDG\u VS\u CTXT\u PROJECT\u START):

    <
    推荐文章