3

我一直在研究以粗体显示菜单项所需的努力——无需自己绘制菜单——并在谷歌搜索后发现了 MFS_DEFAULT 菜单项状态。MSDN文档提到

MFS_DEFAULT
指定菜单项是默认的。一个菜单只能包含一个默认菜单项,它以粗体显示。

我进行了实验,似乎与文档相反,我似乎能够使用此标志以粗体显示多个(或可能全部!)菜单项。有没有人有这方面的经验,即如果有多个粗体菜单项有什么陷阱?达到我想要实现的目标确实有点像黑客攻击,而且我有点担心未知的副作用(即在一个菜单中有多个“默认”菜单项)。

编辑:我还应该补充一点,这篇文章声称 MFS_DEFAULT 标志除了以粗体显示菜单项外什么都不做;尽管如此,我还是有点担心违背“官方”文件......

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

4

1 回答 1

4

你想达到什么目的?

我怀疑将 MFS_DEFAULT 用于其他目的的最大反对意见是你违反了微软试图公布的关于粗体菜单项的含义以及用户(或辅助屏幕阅读器之类的程序)应该在遇到一个时做出反应。

如果你想要做的只是让用户注意一些特别感兴趣的菜单项——嗯,这看起来有点奇怪,但它看起来也很无辜,如果它引起了你我会感到惊讶未来的巨大问题。当然,一切皆有可能!不过,我想知道你到底在做什么。

如果你试图通过加粗和不加粗的菜单项来暴露你的程序状态的一部分——这对我来说似乎有点出乎意料,但我不想在听到细节之前做出判断。

如果你有其他目标——比如你认为菜单的默认字体很丑,你更喜欢所有内容都加粗——那么你发现的方法可能是权宜之计,但也可能有更好的方法获得您想要的东西的方法,如果您愿意,我们可以更详细地讨论(也许在一个单独的问题中)。我怀疑是这种情况,但谁知道呢?

于 2008-11-05T03:16:41.307 回答