在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");

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2938/2938473.xml?temp=.587887
      

  2.   

    你创建Menu的位置不对,放到CMainFrame::OnCreate中就可以了
    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 必须定义成类成员变量
      

  3.   

    msn发送消息界面中的“隐藏窗口框架”和“更改窗口的配色方案”是怎么实现的,请大家谈谈呀
      

  4.   

    to ymbymb(毛病大哥):我试了一下,可以的,谢谢!但是我想在程序运行中动态改变、生成菜单项,能怎么做呢?
      

  5.   

    To add a menu with some items in the file menu at a specified index, use:   MenuItemData data[] ={
        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! 
      

  6.   

    Here's the sample:http://www.codeproject.com/menu/DynMenu/DynMenu_demo.zip
    http://www.codeproject.com/menu/DynMenu/DynMenu_src.zipHave a look!
      

  7.   

    只要窗口创建好了,你在哪里添加,删除菜单项都没有问题,不是一定要在OnCreate里才可以
      

  8.   

    但是我在view的一个菜单响应中创建总是出现异常,不知道为什么?
      

  9.   

    视类里要如下:
    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");
      

  10.   

    这样是可亦的,再多一句嘴:我在没有子菜单的菜单项中要添加子菜单项,如何添加呢?我在视类中用InsertMenu 函数时老是出错,为什么?谢谢!