我一直在调查获取以粗体显示的菜单项所需的工作 - 无需自己绘制菜单 - 并在一些谷歌搜索后发现MFS_DEFAULT菜单项状态。 MSDN文档提及

  

<强> MFS_DEFAULT 结果   指定该菜单   item是默认值。菜单可以   只包含一个默认菜单项,   以粗体显示。

我进行了实验并且出现与文档相反,似乎我可以使用此标志以粗体显示多个(或可能是所有!)菜单项。有没有人有这方面的经验,即如果有多个粗体菜单项有任何陷阱?它确实感觉有点像我想要达到的目标,我有点担心未知的副作用(即在一个菜单中有多个'默认'菜单项。)

编辑:我还应该补充一点,这篇文章声称MFS_DEFAULT flag只会以粗体显示菜单项;不过,我有点担心违反“官方”文件......

EDIT2:这样做的目的是告诉用户有问题的菜单项(即加粗的菜单项)也可以通过双击有问题的控件来调用(菜单项是上下文菜单的一部分)。当我想到这个问题时,我没有考虑这样的事实 - 通常 - 只有一个命令可以与双击事件相关联(d'oh!)。因此我接受了zaphod的答案(它没有直接回答这个问题,但确实解决了我的'问题')

有帮助吗?

解决方案

你想要达到什么目标?

我怀疑将MFS_DEFAULT用于非预期目的的最大反对意见是你违反了微软试图宣传粗体菜单项的含义以及用户如何表达的视觉约定(或者诸如屏幕阅读器之类的辅助程序应该在遇到一个时作出反应。

如果您要做的只是将用户的注意力转移到一些特别感兴趣的菜单项上 - 好吧,这看起来有点奇怪,但它看起来也相当无辜,如果我看起来相当无辜,如果它给你带来了巨大的问题。当然有可能!不过,我想知道你到底要做什么。

如果你试图通过加粗和解锁菜单项来暴露部分程序的状态 - 这对我来说似乎有些意外,但我不愿在听到具体细节之前通过判断。

如果你还有其他一些目标 - 比如你可能认为菜单的默认字体是丑陋的,当你用一切都用粗体表示你更喜欢它时 - 那么你发现的方法可能是权宜之计,但也可能是一个更好的方式来获得你想要的东西,如果你愿意,我们可以更详细地讨论(也许在一个单独的问题中)。我怀疑是这种情况,但谁知道呢?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top