在sdi中动态添加带子菜单的子菜单项,程序提示异常,但在基于dialog中正常,怎么回事?谢谢!插入单独子菜单可以,但是带子菜单的子菜单就不行了! submenu = mainmenu->GetSubMenu(0);
VERIFY(m_NewMenu.CreatePopupMenu());
m_NewMenu.AppendMenu(MF_STRING, ID_APP_EXIT, (LPCTSTR)"eee");
submenu->AppendMenu(MF_POPUP, (UINT)m_NewMenu.m_hMenu, "&sub1");
VERIFY(m_NewMenu.CreatePopupMenu());
m_NewMenu.AppendMenu(MF_STRING, ID_APP_EXIT, (LPCTSTR)"eee");
submenu->AppendMenu(MF_POPUP, (UINT)m_NewMenu.m_hMenu, "&sub1");
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
CMenu *mainMenu = GetMenu();
CMenu *submenu = mainMenu->GetSubMenu(0);
VERIFY(m_NewMenu.CreatePopupMenu());
m_NewMenu.AppendMenu(MF_STRING, ID_APP_EXIT, (LPCTSTR)"eee");
submenu->AppendMenu(MF_POPUP, (UINT)m_NewMenu.m_hMenu, "&sub1");
}
m_NewMenu 必须定义成类成员变量
ID_COMMAND_1, "First Item",
ID_COMMAND_2, "Second Item",
0, NULL
};
CMenu *pMenu = AddSubMenu(pMainFrm, file_menu_index, sub_menu_index, "Dynamic Menu", data); To append an item to the menu later on, use: AddSubMenuItem(pMenu, ID_COMMAND_3, "Third Item");To remove a submenu again, use: RemoveSubMenu(pMainFrm, file_menu_index, sub_menu_index);To remove only one item, use: RemoveSubMenuItem(pMenu, ID_COMMAND_1);That's all. Enjoy!
http://www.codeproject.com/menu/DynMenu/DynMenu_src.zipHave a look!
CMenu *mainMenu = AfxGetMainWnd()->GetMenu();
CMenu *submenu = mainMenu->GetSubMenu(0);
VERIFY(m_NewMenu.CreatePopupMenu());
m_NewMenu.AppendMenu(MF_STRING, ID_APP_EXIT, (LPCTSTR)"eee");
submenu->AppendMenu(MF_POPUP, (UINT)m_NewMenu.m_hMenu, "&sub1");