我建了一个弹出菜单
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); 弹出菜单以后看到的是"修改前的文本"而不是"修改后的文本"呢?
请问大家应该怎样动态修改弹出菜单的文本?谢谢
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); 弹出菜单以后看到的是"修改前的文本"而不是"修改后的文本"呢?
请问大家应该怎样动态修改弹出菜单的文本?谢谢
//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);
你可以这样试试
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为你需要判断显示之前还是之后菜单文字的条件