CMenu *mainmenu,*submenu,*pmenu;
mainmenu=AfxGetMainWnd()->GetMenu();
submenu=mainmenu->GetSubMenu(3);
VERIFY(pMenu->CreatePopupMenu());
VERIFY(pSubMenu->InsertMenu(4, MF_BYPOSITION | MF_POPUP, 
(UINT)pMenu->m_hMenu, "测试1"));

ASSERT_VALID(pMenu);
VERIFY(pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_XIUGAI_DINGZHI_4,"修改定值"));
VERIFY(pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_CHAKAN_DINGZHI_4,"查看定值"));


VERIFY(pSubMenu->InsertMenu(7, MF_BYPOSITION | MF_POPUP, 
(UINT)pMenu->m_hMenu, "测试2"));

ASSERT_VALID(pMenu);
VERIFY(pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_XIUGAI_DINGZHI_6,"修改定值"));
VERIFY(pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_CHAKAN_DINGZHI_6,"查看定值"));上面的代码是为了实现在现有菜单的基础上动态添加带有子菜单的菜单项,我想添加“测试1”和“测试2”两个菜单,每个菜单下又分别带有“修改定值”和“查看定值”两个子菜单,可是上面的代码执行后的结果是这样的:在“测试1”和“测试2”两个菜单下的子菜单都是4个,分别有两个“修改定值”和“查看定值”,这是什么原因造成的,请指教!?

解决方案 »

  1.   

    CMenu *mainmenu,*submenu,*pmenu;
    mainmenu=AfxGetMainWnd()->GetMenu();
    submenu=mainmenu->GetSubMenu(3);
    pMenu=new CMenu;   // 刚才忘了这句了!
    VERIFY(pMenu->CreatePopupMenu());
    VERIFY(pSubMenu->InsertMenu(4, MF_BYPOSITION | MF_POPUP, 
    (UINT)pMenu->m_hMenu, "测试1"));

    ASSERT_VALID(pMenu);
    VERIFY(pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_XIUGAI_DINGZHI_4,"修改定值"));
    VERIFY(pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_CHAKAN_DINGZHI_4,"查看定值"));


    VERIFY(pSubMenu->InsertMenu(7, MF_BYPOSITION | MF_POPUP, 
    (UINT)pMenu->m_hMenu, "测试2"));

    ASSERT_VALID(pMenu);
    VERIFY(pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_XIUGAI_DINGZHI_6,"修改定值"));
    VERIFY(pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_CHAKAN_DINGZHI_6,"查看定值"));上面的代码是为了实现在现有菜单的基础上动态添加带有子菜单的菜单项,我想添加“测试1”和“测试2”两个菜单,每个菜单下又分别带有“修改定值”和“查看定值”两个子菜单,可是上面的代码执行后的结果是这样的:在“测试1”和“测试2”两个菜单下的子菜单都是4个,分别有两个“修改定值”和“查看定值”,这是什么原因造成的,请指教!?
      

  2.   

    搞定了,应该在第二次Create之前先DestoryMenu,呵呵