如何将菜单项更改为选中或未选中?
Posted
技术标签:
【中文标题】如何将菜单项更改为选中或未选中?【英文标题】:How change menu item to checked or unchecked? 【发布时间】:2013-10-20 12:24:41 【问题描述】:有一些菜单,需要将其更改为MF_CHECKED
或MF_UNCHECKED
。
以及如何查看现在检查的是哪一项菜单?
【问题讨论】:
1 阅读 MSDN。 2 阅读 MSDN 3DWORD 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 字段。
【讨论】:
以上是关于如何将菜单项更改为选中或未选中?的主要内容,如果未能解决你的问题,请参考以下文章
C#WInform 如何让菜单栏中只能有一个菜单项被选中,其他的不选中,当选择中其他的时,选中的为选中状态!
Linux 内核编译 Linux 内核 ④ ( 打开 Linux 内核编译 菜单配置 |菜单配置中的光标移动与选中状态 | 保存配置 | 配置项帮助文档 )