【发布时间】:2013-11-25 07:30:55
【问题描述】:
我尝试按照代码更改菜单文本,在命令窗口中显示正确的活动,更改菜单文本,但 UI 没有变化。
另外,我的菜单在对话框中,填写在对话框参数的菜单字段中
老问题是
How do I change POPUP Text of Menu without ID
谁来帮帮我!
HMENU hMenu;
hMenu=LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU));
CMenu* pMenu = CMenu::FromHandle(hMenu);
int i, nCou = pMenu->GetMenuItemCount();
UINT uID;
CString ss;
for (i = 0; i < nCou; i++)
{
uID = pMenu->GetMenuItemID(i);
if (uID == 0) // separator
{
TRACE(_T("----------------------\n"));
continue;
}
pMenu->GetMenuString(i, ss, MF_BYPOSITION);
if (uID == (UINT)-1)
{
TRACE(_T("Popup '%s' "), ss);
ss += _T("-Modified");
//pMenu->ModifyMenu(i, MF_BYPOSITION|MF_STRING|MF_ENABLED, 0, ss);
//pMenu->ModifyMenu(i, MF_BYPOSITION|MF_STRING|MF_ENABLED, i, ss);
//pMenu->ModifyMenu(0, MF_BYPOSITION|MF_STRING|MF_ENABLED, i, ss);
//pMenu->ModifyMenu(0, MF_BYPOSITION|MF_STRING|MF_ENABLED, 0, ss);
//pMenu->ModifyMenu(0, MF_BYPOSITION|MF_STRING|MF_ENABLED|MF_CHANGE, 0, ss);
//pMenu->ModifyMenu(i, MF_BYPOSITION, 0, ss);
pMenu->ModifyMenu(i, MF_BYPOSITION|MF_CHANGE, 0, ss);
TRACE(_T("modified to '%s' "), ss);
}
else
TRACE(_T("Item '%s', ID=%d "), ss, uID);
TRACE(_T("\n"));
}
【问题讨论】:
-
你的问题是什么?您是否将此菜单分配给框架/对话框?如果没有,你的改变没有任何效果......
-
我的菜单在对话框中,没有id的菜单文本没有变化
-
但是您有一个循环并使用 MF_BYPOSITION 进行修改。当您使用此菜单时,您发布的代码应该可以工作...
标签: visual-studio-2008 menu mfc dialog popup