Menu MFCSDI应用程序,如何更改菜单项的标题?

Menu MFCSDI应用程序,如何更改菜单项的标题?,menu,mfc,caption,sdi,Menu,Mfc,Caption,Sdi,我一整天都在试图解决这个简单的问题,但没有成功。 我在网上找到了很多提示,但似乎没有一个对我的问题有效 我的问题很简单:我想在运行时更改菜单项的标题 但似乎我找到的所有解决方案都非常具体 我的要求如下: -它是一个MFC应用程序(VS2010) -它是SDI应用程序,而不是MDI -我想更改主菜单项(如“文件”)的标题,而不是子菜单的条目 由于主条目项,菜单项没有ID。因此,使用ON_UPDATE_命令\u UI的解决方案将不起作用 我的问题是: -我尝试的代码正在生成断言或异常 -或者函数调用

我一整天都在试图解决这个简单的问题,但没有成功。 我在网上找到了很多提示,但似乎没有一个对我的问题有效

我的问题很简单:我想在运行时更改菜单项的标题

但似乎我找到的所有解决方案都非常具体

我的要求如下: -它是一个MFC应用程序(VS2010) -它是SDI应用程序,而不是MDI -我想更改主菜单项(如“文件”)的标题,而不是子菜单的条目

由于主条目项,菜单项没有ID。因此,使用ON_UPDATE_命令\u UI的解决方案将不起作用

我的问题是: -我尝试的代码正在生成断言或异常 -或者函数调用返回false -或者该函数似乎运行良好,但我没有看到任何结果(标题仍保持不变)

可能我使用了错误的函数,或者调用函数的位置错误。 有没有人举一个例子,在我的申请先决条件下有效

非常非常感谢


Richard

Windows巧妙地将修改菜单的功能隐藏在神秘名称
ModifyMenu
下。我讨厌他们那样做。我真的很希望Linux/Unix,它的名字很清晰,比如
shmdt
mvwaddchnstr
。不管怎样,从我的肥皂盒里拿出来,你可以这样称呼它:

GetParentFrame()->GetMenu()->ModifyMenuW(1, MF_BYPOSITION, 0, L"New Item");
GetParentFrame()->Invalidate();

使用其索引修改菜单项并包括
MF\u BYPOSITION
。您好,我尝试了您的代码。但它失败了。我需要从何处调用此ModifyMenu()?我在CFormView类的OnInitialUpdate中添加了代码。但该调用导致了一个异常:-(