Visual c++ 菜单图标不适用于MFC功能区应用程序
正如标题所说,如果我的MFC ribbon应用程序中有一个弹出菜单,它不会在每个菜单选项旁边显示菜单图标。相同的代码、相同的资源在基于工具栏的应用程序中显示图标。我用来显示上下文/弹出菜单的代码如下: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:
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