winapi - MFC 菜单不会传播到应用程序中

标签 winapi visual-studio-2008 mfc resource-files

我正在努力对旧版 进行轻微更改VS 2008 & MFC 项目,包括对 WinAPI/MFC *.rc 的更改资源文件 .我已经进行了这些更改,例如,从 IDR_MAINFRAME 更改菜单字符串(对于 "New Scan" ,如果重要的话)至"New Organism"在一台计算机上,致力于 VCS,并尝试在另一台几乎相同的配置(不确定是否相关)上重建项目,这就是我遇到问题的时候。

目前,我有

  • 从 VS 资源编辑器中对菜单的更改不会传播到应用程序中(旧值保留)
  • 对传播到应用程序的关于对话框的更改
  • 一个没有提及 "New Scan" 的 RC 文件
  • 没有包含 "New Scan" 的文件,包括二进制文件(尽管如前所述,这可能是由于编码)

  • 我有
  • 清理和重建
  • 手动清理和重建
  • 删除了*.res文件并仅编译 *.rc文件到 *.res只是为了确保那里的路径没问题
  • 修改了配置,使(项目 -> 属性 -> 资源 -> 命令行)具有到 *.res 的绝对路径。文件。
  • 验证当前模块确实是exe通过 GetModuleHandle 执行
  • 验证所有对 FindResource 的调用和 LoadResource通过NULL作为当前模块,意味着资源应该从 exe 加载。
  • 使用 ResEdit 验证 exe 中的资源包含 "New Organism" ,即使它显示 "New Scan"运行时。我验证了#define资源的编号与 ResEdit 报告的编号相同。已验证 exe 中没有其他类似资源.
  • 验证我正在运行相同的 exe我正在检查并尝试从 IDE 和 Windows 资源管理器运行它。
  • 使用 ResEdit 检查了所有(两个)加载的非系统 DLL(由输出窗口和依赖项步行器报告),它们都属于 3rd paty 库,并且它们都不包含任何菜单资源(它们只包含 list )。
  • 尝试更改/删除加载菜单的命令( CFrameWndEx::LoadFrame )并验证它会强制应用程序失败。
  • 验证拥有 IDR_AppnameTYPE MENU使用第二份菜单没有帮助(请参阅下面 thomiel 的回答)
  • 使用谷歌

  • 无济于事。我特别不确定原始字符串 "New Scan" 在哪里,来自以及我的关于对话框的更改如何传播而对菜单的更改没有。 如何使对菜单的更改传播到 *.exe本身?

    最佳答案

    如果是 SDI 或 MDI:不仅要更改 IDR_MAINFRAME,还要更改 IDR_??????TYPE,这是打开文档时显示的菜单。

    关于winapi - MFC 菜单不会传播到应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24595016/

    相关文章:

    C# 定时器不工作?

    c++ - 我在哪里可以创建没有管理员权限/特权的目录?

    c - 使用 Mutex 锁定和同步

    c++ - 我如何使用 WinAPI 将消息发送到 Internet Explorer 9

    c++ - 使用 Visual Studio 2008 构建 OpenCV 应用程序并从另一台计算机运行它

    mfc - 如何在 MFC 中动态显示/隐藏工具栏(整个栏,而不是单个按钮)?

    c# - 如何在 C# 中监听 Windows 事件?

    visual-studio-2008 - 如何让 Visual Studio 2008 在不安装 SQL Business Intelligence Development Studio 2005 的情况下编辑 SSRS 2005 报表项目?

    c++ - 仅在 CComboBox 类型中包含某些项目?

    c++ - _CrtSetBreakAlloc 使用内存内容而不是分配号