gpt4 book ai didi

c++ - 为什么我不能禁用/变灰菜单项? (MFC)

转载 作者:可可西里 更新时间:2023-11-01 18:28:07 24 4
gpt4 key购买 nike

我正在尝试使用 CMenu::EnableMenuItem() 方法禁用/变灰菜单项。

我有一个 CMenu* 变量 pMenu,它引用对话框的顶部菜单。我可以使用 pMenu->GetSubMenu(int) 并使用 submenu->GetMenuStringA() 获取子菜单,验证我返回的子菜单/菜单项的名称。不过,我在使用 EnableMenuItem() 方法时遇到了问题。假设有一个 File 菜单。其中有 NewOpen 弹出菜单以及 ImportCloseClose All菜单项。 NewOpen 有子菜单项。 (例如 New->Document)使用 submenu->EnableMenuItem([position of submenu/menuitem], MF_BYPOSITION | MF_GRAYED); 我可以禁用 NewOpen,但是 ImportCloseClose All 以及所有菜单的功能失败带有 NewOpen 的项目。

注意:当我说 EnableMenuItem() 失败时,我并不是说它返回 -1。它返回以前的状态,但菜单不会被禁用或变灰。

EnableMenuItem() 的 MSDN 文档中:http://msdn.microsoft.com/en-us/library/h62wh3y1.aspx它声称这将适用于弹出菜单项和标准菜单项。不过,它似乎只适用于弹出式广告。

最佳答案

MFC 有另一种启用/禁用菜单项的方案,该方案正在撤消您正在做的事情。要在 MFC 方案中工作,请按此处所述添加消息处理程序 ON_UPDATE_CMD_UI:

http://msdn.microsoft.com/en-us/library/6kc4d8fh.aspx

关于c++ - 为什么我不能禁用/变灰菜单项? (MFC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28026664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com