如何将菜单项更改为选中或未选中?

Posted

技术标签:

【中文标题】如何将菜单项更改为选中或未选中?【英文标题】:How change menu item to checked or unchecked? 【发布时间】:2013-10-20 12:24:41 【问题描述】:

有一些菜单,需要将其更改为MF_CHECKEDMF_UNCHECKED。 以及如何查看现在检查的是哪一项菜单?

【问题讨论】:

1 阅读 MSDN。 2 阅读 MSDN 3 DWORD CheckMenuItem(HMENU, UINT, UINT) 4 使用 BOOL GetMenuItemInfo(HMENU, UINT, BOOL, LPMENUITEMINFO) @enhzflep: From CheckMenuItem: "CheckMenuItem 可用于“要求”部分中指定的操作系统。它可能会在后续更改或不可用版本。改为使用SetMenuItemInfo。" - 您不应该在没有免责声明的情况下建议使用此 API。 @IInspectable - 正如我很少说的那样,再次感谢您。在建议弃用接口方面的勤奋肯定应该比我的要高。 【参考方案1】:

您可以通过调用GetMenuItemInfo 来检索检查状态以及其他信息。它填充MENUITEMINFO 结构。如果菜单项被选中,它的fState 成员将设置MFS_CHECKED 标志。

要修改菜单项的检查状态,请调用SetMenuItemInfo。还有一个实用函数CheckMenuItem。文档指出此 API 调用在 Windows 2000 之后的版本中可能不可用。但是,它仍然可用。

【讨论】:

【参考方案2】:

将菜单状态保存在您自己的变量中是直接的解决方案。但您可以使用GetMenuItemInfo() 检索菜单项的状态,即MENUITEMINFO.fState 字段。

【讨论】:

以上是关于如何将菜单项更改为选中或未选中?的主要内容,如果未能解决你的问题,请参考以下文章