我建了一个弹出菜单
CMenu m_MyMenu;
m_MyMenu.CreatePopupMenu();
然后加入一项:
m_MyMenu.AppendMenu(MF_STRING ,ID_MENUITEM_A,"修改前的文本");...
然后修改:
m_MyMenu.ModifyMenu(MF_BYCOMMAND,MF_STRING ,ID_MENUITEM_A,"修改后的文本");为什么用m_MyMenu.TrackPopupMenu(TPM_LEFTALIGN,x, y,this); 弹出菜单以后看到的是"修改前的文本"而不是"修改后的文本"呢?
请问大家应该怎样动态修改弹出菜单的文本?谢谢

解决方案 »

  1.   

    还有一个问题,就是怎样修改CListCtrl列表头的Text啊,加20分。
      

  2.   

    BCMenu   nMenu;
    //Load the menu
    nMenu.LoadMenu(IDR_CTRLMENU);
    nMenu.LoadToolbar(IDR_TOOLBAR4);
    if(m_bPlayFlag == FALSE)
    {
    nMenu.SetMenuText(IDR_CTRL_PLAY,"播放(&P)",MF_BYCOMMAND);
    nMenu.LoadToolbar(IDR_TOOLBAR2);
    }
    else
    {
    nMenu.SetMenuText(IDR_CTRL_PLAY,"暂停(&P)",MF_BYCOMMAND);
    nMenu.LoadToolbar(IDR_TOOLBAR3);
    } if( this->IsWindowVisible() )  //
    nMenu.SetMenuText(IDR_MENU_MIN, "最小化", MF_BYCOMMAND);
    else
    nMenu.SetMenuText(IDR_MENU_MIN, "还原", MF_BYCOMMAND);
      

  3.   

    上面是我的帖子是从我的程序拷出来的,没修改就不小发了,不好意思
    你可以这样试试
    CMenu   nMenu;
    CPoint  point;
    //Load the menu
    nMenu.LoadMenu(IDR_CTRLMENU);
    if(bool)
    {     nMenu.SetMenuText(IDR_CTRL_PLAY,"修改前文字",MF_BYCOMMAND);

    }
    else
    {
         nMenu.SetMenuText(IDR_CTRL_PLAY,"修改后文字",MF_BYCOMMAND);
    }
    CMenu *pContextMenu = nMenu.GetSubMenu(0);
    //Display the contextmenu
    pContextMenu->TrackPopupMenu( TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON, 
    point.x, point.y, this);bool为你需要判断显示之前还是之后菜单文字的条件
      

  4.   

    感谢TequieroEcho() 的帮助啊,不过您的SetMenuText恐怕不是系统的函数吧,我的CMenu怎么就没有SetMenuText呢?就只有一个SetMenuItemInfo.
      

  5.   

    我看到您的Menu类是一个BCMenu类,您能不能把您的这个类发到)啊?谢谢!