MFC SDI 应用程序,如何更改菜单项的标题?
Posted
技术标签:
【中文标题】MFC SDI 应用程序,如何更改菜单项的标题?【英文标题】:MFC SDI Application, how to change caption of menu item? 【发布时间】:2014-11-03 19:35:13 【问题描述】:我整天都在尝试解决这个简单的问题,但没有任何成功。 我在互联网上找到了很多提示,但似乎没有一个对我的问题有效。
我的问题很简单:我想在运行时更改菜单项的标题
但我发现的所有解决方案似乎都非常具体。
我的要求是这样的: - 它是一个 MFC 应用程序 (VS2010) - 这是一个 SDI 应用程序,而不是 MDI - 我想更改主菜单项(如“文件”)的标题,而不是子菜单的条目。
由于主入口项,菜单项没有ID。因此使用 ON_UPDATE_COMMAND_UI 的解决方案将不起作用!
我的问题是: - 我尝试的代码正在生成断言或异常 - 或者函数调用返回 false - 或者函数似乎运行良好,但我没有看到任何结果(标题仍然不变)
也许我使用了错误的函数,或者调用函数的位置错误。 有没有人可以在我的应用程序前提条件下工作的示例?
非常感谢!
理查德
【问题讨论】:
使用其索引修改菜单项,包括MF_BYPOSITION
。
【参考方案1】:
Windows 巧妙地隐藏了在 ModifyMenu
这个神秘名称下修改菜单的功能。我讨厌他们做那样的事情。真的让我希望 Linux/Unix 有像 shmdt
和 mvwaddchnstr
这样清晰的名称。无论如何,暂时离开我的肥皂盒,你可以这样称呼它:
GetParentFrame()->GetMenu()->ModifyMenuW(1, MF_BYPOSITION, 0, L"New Item");
GetParentFrame()->Invalidate();
【讨论】:
你好,我试过你的代码。但它失败了。我需要从哪里调用此 ModifyMenu() ?我在 OnInitialUpdate 的 CFormView 类中添加了代码。但是调用导致异常:-(以上是关于MFC SDI 应用程序,如何更改菜单项的标题?的主要内容,如果未能解决你的问题,请参考以下文章