Using vsx how do you create a sub menu with commands?

末鹿安然 提交于 2019-12-18 17:02:41

问题


I have created the following vsct file 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>

What the end result is I want to see when I the context menu to have an option of

Work??? --> DO SOMETHING REAL COOL!!!!!!!!


回答1:


Your Menu should have its parent set to a group instead of the top-level context menu. For example, try changing this line:

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

to this line:

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

You should now see "TryMainMenu" show up next to "Debug" on the project node's context menu. If you want your menu to exist in its own group on the top level context menu, you should define a new group with parent IDM_VS_CTXT_PROJNODE and set your menu's parent to that.

Alternatively, you can discover what the other existing groups are (besides IDG_VS_CTXT_PROJECT_START) by looking at SharedCmdPlace.vsct and finding Group elements with the following parent:

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


来源:https://stackoverflow.com/questions/2642524/using-vsx-how-do-you-create-a-sub-menu-with-commands

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!