【发布时间】:2021-01-28 23:48:27
【问题描述】:
我正在处理一个遗留的 MFC 项目。该项目包括一个具有菜单栏的 SDI 应用程序。
启动后,应用程序的菜单栏完全变灰:
我已阅读以下问题,但它们似乎无法解决我的情况:
Menu items are being enabled or disabled by default. Why?
基本上,上述问题的答案表明我需要一个 ON_COMMAND 处理程序,它存在于我感兴趣的菜单功能中。
这是一个非常大的专有项目,所以我不能简单地发布代码,并且可能需要一段时间来提取一个最小的可重现示例。是否有任何我可以搜索的功能名称可能会禁用菜单栏?
在我看来,整个菜单栏都被禁用了,所以我认为我的问题与个别 ON_COMMAND 处理程序无关。
经过一些更改后没有发生这种情况,否则我只会回滚更改。我相信自从我开始使用该应用程序以来,它一直以灰色的菜单栏启动。
主应用程序是一个 CWinApp 派生类,而我添加 ON_COMMAND 处理程序的类是一个 CFrameWnd 派生类。
我正在使用 Windows SDK 版本 10.0 在 VS2019 (v142) 中进行开发,并在 Windows 10 上进行测试。我感觉(有点不受支持)这个特定问题与编译器的确切版本没有密切关系,或者甚至是 Windows 10;我的猜测是我缺少一些关于 MFC 通常如何启用或禁用菜单栏的细节。
【问题讨论】:
-
自上次菜单栏工作以来发生了什么变化?如果您“不能简单地发布代码”,那么您至少应该尝试缩小范围 - 使用哪些类、编译器的版本、Windows 的版本等。
-
@dxiv 我没有进行更改,导致它变灰;自从我开始处理应用程序以来就是这样。我将在问题中添加详细信息:编译器等。
-
我不是说这是你的改变。但是如果那个菜单栏从来没有工作过,那就很奇怪了,所以问题仍然是它最后一次工作是什么时候,以及从那以后发生了什么变化。