【问题标题】:MFC SDI Application, how to change caption of menu item?MFC SDI 应用程序,如何更改菜单项的标题?
【发布时间】:2014-11-03 19:35:13
【问题描述】:

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

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

但我发现的所有解决方案似乎都非常具体。

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

由于主入口项,菜单项没有ID。因此使用 ON_UPDATE_COMMAND_UI 的解决方案将不起作用!

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

也许我使用了错误的函数,或者调用函数的位置错误。 有没有人可以在我的应用程序前提条件下工作的示例?

非常感谢!

理查德

【问题讨论】:

  • 使用其索引修改菜单项,包括MF_BYPOSITION

标签: menu mfc caption sdi


【解决方案1】:

Windows 巧妙地隐藏了在 ModifyMenu 这个神秘名称下修改菜单的功能。我讨厌他们做那样的事情。真的让我希望 Linux/Unix 有像 shmdtmvwaddchnstr 这样清晰的名称。无论如何,暂时离开我的肥皂盒,你可以这样称呼它:

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

【讨论】:

  • 你好,我试过你的代码。但它失败了。我需要从哪里调用此 ModifyMenu() ?我在 OnInitialUpdate 的 CFormView 类中添加了代码。但是调用导致异常:-(
猜你喜欢
  • 2014-05-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 1970-01-01
  • 2017-06-19
相关资源
最近更新 更多