我用下面的程序试图修改下拉菜单项的名字BOOL loadmu = submenu->ModifyMenu(pos, MF_BYPOSITION , IDC_BUTTON_LOOP, "loop");
DrawMenuBar(); 返回值为1,应该执行成功,但是菜单项的名字一直没有变化,连updatewindow()都用上了,一直没有反应我还是用了msdn的例子,但是结果都是一样,请教一下,是什么原因?这段代码我实在view.cpp中执行的,没有在mainframe.cpp中使用,是否会有影响呢?

解决方案 »

  1.   

    是视图的菜单? 如果是的, 重新调用 SetMenu
      

  2.   

    是mainframe中的菜单,我只是在view.cpp代码之中调用,好像SetMenu也不行啊。
      

  3.   

    好像在mainframe.cpp之中使用,就可以了,为什么在cview.cpp中却不行呢?
      

  4.   

    在视图类中执行DrawMenuBar调用的是视图类的函数,因为菜单是框架的,所以要调用框架类的DrawMenuBar函数才行,按我在3楼给的代码来做。
      

  5.   

    我已经作了回复了,AfxGetMainWnd()->DrawMenuBar();这个操作根本不管用。
      

  6.   

    CMenu *pSubMenu = NULL;
    int nSF;
    if (MainMenu.LoadMenu(IDR_CONTEXTMENU))
    {
     pSubMenu->ModifyMenu(0,MF_BYPOSITION | MF_POPUP ,(UINT)SwitchView.m_hMenu,strMenuItem); pSubMenu->ModifyMenu(IDM_TMBVIEW_SAVEAS,MF_BYCOMMAND|MF_GRAYED,IDM_TMBVIEW_SAVEAS,strMenuItem);
    }
    你再看看你的这个函数的参数了,应该没什么问题了。上面是我在非mainframe使用的例子了
      

  7.   

    关键是你这个submenu怎么来的。
      

  8.   

    哦,不好意思了,忘写了一句.
    pSubMenu = MainMenu.GetSubMenu(0); 
      

  9.   

    submenu->ModifyMenu(pos, MF_BYPOSITION , IDC_BUTTON_LOOP, "loop"); 
    改成
    submenu->ModifyMenu(pos, MF_BYCOMMAND , IDC_BUTTON_LOOP, "loop");