怎样修改弹出菜单中的文字

Dupon_Bit 2006-09-10 01:46:27
我建了一个弹出菜单
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); 弹出菜单以后看到的是"修改前的文本"而不是"修改后的文本"呢?
请问大家应该怎样动态修改弹出菜单的文本?谢谢
...全文
212 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dupon_Bit 2006-09-15
  • 打赏
  • 举报
回复
搞掂这个问题了,谢谢大家的热情帮忙啊!
Dupon_Bit 2006-09-10
  • 打赏
  • 举报
回复
我看到您的Menu类是一个BCMenu类,您能不能把您的这个类发到我的邮箱(cxiaosh@163.com)啊?谢谢!
Dupon_Bit 2006-09-10
  • 打赏
  • 举报
回复
感谢TequieroEcho() 的帮助啊,不过您的SetMenuText恐怕不是系统的函数吧,我的CMenu怎么就没有SetMenuText呢?就只有一个SetMenuItemInfo.
TequieroEcho 2006-09-10
  • 打赏
  • 举报
回复
上面是我的帖子是从我的程序拷出来的,没修改就不小发了,不好意思
你可以这样试试
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为你需要判断显示之前还是之后菜单文字的条件
TequieroEcho 2006-09-10
  • 打赏
  • 举报
回复
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);
Dupon_Bit 2006-09-10
  • 打赏
  • 举报
回复
还有一个问题,就是怎样修改CListCtrl列表头的Text啊,加20分。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧