Visual c++ 菜单图标不适用于MFC功能区应用程序

Visual c++ 菜单图标不适用于MFC功能区应用程序,visual-c++,mfc,ribbon,Visual C++,Mfc,Ribbon,正如标题所说,如果我的MFC ribbon应用程序中有一个弹出菜单,它不会在每个菜单选项旁边显示菜单图标。相同的代码、相同的资源在基于工具栏的应用程序中显示图标。我用来显示上下文/弹出菜单的代码如下: CMenu menu; VERIFY(menu.LoadMenu(m_MenuID)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); CWnd* pWndPopupOwner = CWnd:

正如标题所说,如果我的MFC ribbon应用程序中有一个弹出菜单,它不会在每个菜单选项旁边显示菜单图标。相同的代码、相同的资源在基于工具栏的应用程序中显示图标。我用来显示上下文/弹出菜单的代码如下:

CMenu menu;
    VERIFY(menu.LoadMenu(m_MenuID));
    CMenu* pPopup = menu.GetSubMenu(0);
    ASSERT(pPopup != NULL);
    CWnd* pWndPopupOwner = CWnd::GetFocus();
    while (pWndPopupOwner->GetStyle() & WS_CHILD)
        pWndPopupOwner = pWndPopupOwner->GetParent();
    pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, m_MenuPoint.x, m_MenuPoint.y,
        pWndPopupOwner);
    for (int i=0; i<pPopup->GetMenuItemCount(); i++)
        pPopup->EnableMenuItem(0,MF_BYPOSITION | MF_ENABLED);

资源定义语句应该是问题的一部分。我现在开发的应用程序是基于工具栏的,并显示带有图标的弹出菜单。向导生成的代码调用app.GetContextMenuManager()->ShowPopupMenu(IDR\u POPUP\u EDIT,point.x,point.y,this,TRUE)以显示弹出菜单。也许试试这个,否则。。。深入了解MFC源代码,看看发生了什么(可能是一些自定义代码,甚至是自定义类)。作为旁注,为什么要在显示菜单后启用菜单项?而for循环只启用项0,而不启用i。顺便说一句,MFC应用程序最好使用OnUpadateUI()处理程序来启用/禁用菜单命令。资源定义语句应该是问题的一部分。我现在开发的应用程序基于工具栏,显示带有图标的弹出菜单。向导生成的代码调用app.GetContextMenuManager()->ShowPopupMenu(IDR\u POPUP\u EDIT,point.x,point.y,this,TRUE)以显示弹出菜单。也许试试这个,否则。。。深入了解MFC源代码,看看发生了什么(可能是一些自定义代码,甚至是自定义类)。作为旁注,为什么要在显示菜单后启用菜单项?而for循环只启用项0,而不启用i。顺便说一句,MFC应用程序最好使用OnUpadateUI()处理程序来启用/禁用菜单命令。
IDR_ACTION_ADDPTS MENU
BEGIN
    POPUP "_POPUP_"
    BEGIN
       MENUITEM "Arc 2Pts+Radius",             ID_CIRCARC_ARC_2PT_RAD
       MENUITEM "Arc 2Pts+Tangent",            ID_CIRCARC_ARC_2PT_TAN
       MENUITEM "Arc 3Pts",                    ID_CIRCARC_ARC_3PT
    END
END

IDR_ARCS TOOLBAR 16, 15
BEGIN
    BUTTON      ID_CIRCARC_ARC_2PT_RAD
    BUTTON      ID_CIRCARC_ARC_2PT_TAN
    BUTTON      ID_CIRCARC_ARC_3PT
END

STRINGTABLE
BEGIN
    ID_CIRCARC_ARC_2PT_RAD  "Create an arc with two points and a radius\nArc 2Pts+Radius"
    ID_CIRCARC_ARC_2PT_TAN  "Create an arc with two points and an incoming tangent\nArc 2Pts+Tangent"
    ID_CIRCARC_ARC_3PT      "Create an arc with three points\nArc 3Pts"
END