是什么导致 MFC 应用程序菜单栏变灰?
What causes an MFC app menu-bar to be greyed out?
我正在处理遗留 MFC 项目。该项目包括一个带有菜单栏的 SDI 应用程序。
启动后,应用程序的菜单栏完全变灰:
我已经通读了以下问题,但它们似乎没有解决我的情况:
MFC Menu Item remains grayed
Menu items are being enabled or disabled by default. Why?
基本上,上述问题的答案表明我需要一个 ON_COMMAND 处理程序,它存在于我感兴趣的菜单功能中。
这是一个非常大的专有项目,所以我不能简单地 post 代码,提取最小的可重现示例可能需要一段时间。是否有任何我可以搜索的功能名称可能会禁用菜单栏?
在我看来整个菜单栏都被禁用了,所以我认为我的问题与个别 ON_COMMAND 处理程序无关。
经过一些更改后没有发生这种情况,否则我只会回滚更改。我相信自从我开始使用该应用程序以来,该应用程序的启动菜单栏一直是灰色的。
主应用程序是 CWinApp 派生的 class,我添加 ON_COMMAND 处理程序的 class 是 CFrameWnd 派生的 class。
我正在使用 Windows SDK 版本 10.0 在 VS2019 (v142) 中进行开发,并在 Windows 10 上进行测试。我有一种感觉(有点不受支持)这个特定问题并没有得到密切关注与编译器的确切版本有关,甚至 Windows10;我的猜测是我遗漏了 MFC 通常如何启用或禁用菜单栏的一些细节。
“变灰”表示小部件已禁用。
您需要 EnableWindow
在小部件上。
指定 EnableWindow(FALSE)
将禁用小部件 (window)。
困难的部分是找出调用此函数的位置或方式。
状态可以在资源文件中指定。
它也可以在初始化方法或构造函数中声明。
我正在处理遗留 MFC 项目。该项目包括一个带有菜单栏的 SDI 应用程序。
启动后,应用程序的菜单栏完全变灰:
我已经通读了以下问题,但它们似乎没有解决我的情况:
MFC Menu Item remains grayed
Menu items are being enabled or disabled by default. Why?
基本上,上述问题的答案表明我需要一个 ON_COMMAND 处理程序,它存在于我感兴趣的菜单功能中。
这是一个非常大的专有项目,所以我不能简单地 post 代码,提取最小的可重现示例可能需要一段时间。是否有任何我可以搜索的功能名称可能会禁用菜单栏?
在我看来整个菜单栏都被禁用了,所以我认为我的问题与个别 ON_COMMAND 处理程序无关。
经过一些更改后没有发生这种情况,否则我只会回滚更改。我相信自从我开始使用该应用程序以来,该应用程序的启动菜单栏一直是灰色的。
主应用程序是 CWinApp 派生的 class,我添加 ON_COMMAND 处理程序的 class 是 CFrameWnd 派生的 class。
我正在使用 Windows SDK 版本 10.0 在 VS2019 (v142) 中进行开发,并在 Windows 10 上进行测试。我有一种感觉(有点不受支持)这个特定问题并没有得到密切关注与编译器的确切版本有关,甚至 Windows10;我的猜测是我遗漏了 MFC 通常如何启用或禁用菜单栏的一些细节。
“变灰”表示小部件已禁用。
您需要 EnableWindow
在小部件上。
指定 EnableWindow(FALSE)
将禁用小部件 (window)。
困难的部分是找出调用此函数的位置或方式。 状态可以在资源文件中指定。 它也可以在初始化方法或构造函数中声明。