Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 如何动态更改没有ID的菜单文本_Visual Studio 2008_Menu_Mfc_Dialog_Popup - Fatal编程技术网

Visual studio 2008 如何动态更改没有ID的菜单文本

Visual studio 2008 如何动态更改没有ID的菜单文本,visual-studio-2008,menu,mfc,dialog,popup,Visual Studio 2008,Menu,Mfc,Dialog,Popup,我试着按照代码更改菜单文本,在命令窗口中显示正确的活动,更改菜单文本,但UI没有更改 另一个,我的菜单在对话框上,填写在对话框参数的菜单字段中 老问题是 有人帮帮我 HMENU hMenu; hMenu=LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU)); CMenu* pMenu = CMenu::FromHandle(hMenu); int i, nCou = pMenu->GetMenuItemCount(); UI

我试着按照代码更改菜单文本,在命令窗口中显示正确的活动,更改菜单文本,但UI没有更改

另一个,我的菜单在对话框上,填写在对话框参数的菜单字段中

老问题是

有人帮帮我

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"));
}
humenu-humenu;
humenu=LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU));
CMenu*pMenu=CMenu::FromHandle(hMenu);
int i,nCou=pMenu->GetMenuItemCount();
UINT-uID;
CString-ss;
对于(i=0;iGetMenuItemID(i);
if(uID==0)//分隔符
{   
跟踪(\u T(“-------------------------\n”);
继续;
}
pMenu->GetMenuString(i、ss、MF\u按位置);
如果(uID==(UINT)-1)
{   
跟踪(_T(“弹出窗口“%s”),ss);
ss+=_T(“-修改”);
//pMenu->ModifyMenu(i,MF_按位置| MF_字符串| MF_已启用,0,ss);
//pMenu->ModifyMenu(i,MF_按位置| MF_字符串| MF_已启用,i,ss);
//pMenu->ModifyMenu(0,MF_按位置| MF_字符串| MF_已启用,i,ss);
//pMenu->ModifyMenu(0,MF_按位置| MF_字符串| MF_已启用,0,ss);
//pMenu->ModifyMenu(0,MF_按位置| MF_字符串| MF_已启用| MF_更改,0,ss);
//pMenu->ModifyMenu(i、MF\u按位置、0、ss);
pMenu->ModifyMenu(i,MF_按位置| MF_更改,0,ss);
跟踪(_T(“修改为“%s”),ss);
}
其他的
跟踪(_T(“项“%s”,ID=%d”),ss,uID);
跟踪(_T(“\n”);
}

我回答我的问题,更改代码

CMenu* pMenu = CMenu::FromHandle(hMenu); 


它会成功的!非常感谢

你有什么问题?是否将此菜单指定给框架/对话框?如果没有,您的更改没有效果…我的菜单在对话框中,没有菜单文本的更改,没有IDB,但您有一个循环,并使用MF_BYPOSITION进行修改。当您使用此菜单时,您发布的代码应该可以工作…另一个,菜单不能重画,必须使用setmenu()重新刷新。
CMenu* pMenu = GetMenu();