gpt4 book ai didi

winapi - 如何在 MFC 中创建一个包含 2 个项目的行的菜单?

转载 作者:行者123 更新时间:2023-12-03 21:59:53 25 4
gpt4 key购买 nike

我用 MF_MENUBARBREAK 做了一些实验,但是我只能在菜单的最顶层实现两列。

我想要的是这样的菜单:

我想要的不是完整的菜单有两列,而是在第一行有两个菜单项(左和右)。每个其他条目将占据其自己的整行。这可能吗?

最佳答案

不,这是不可能的。 native 菜单系统不支持“拆分”多列菜单。

如果一个下拉菜单有多个列,那么整个下拉菜单也会有多个列。否则,所有项目都显示在一个列中。

你不能拥有这个(除非你像我一样在 Paint 中模拟它):

相反,您为其设置了 MF_MENUBARBREAK 标志的项目之后的所有项目都将显示在第二列中。例如,如果“右”项设置了 MF_MENUBARBREAK 标志,您的菜单将如下所示:

您无法让项目“一”到“三”看起来好像它们不在一列或另一列中。如果您在“右”(带有 MF_MENUBARBREAK 标志的那个)之前添加项目,它们将全部在第一列中,如下所示:

...但它们仍在一列中。没有办法解决这个问题,缺少 owner-drawing the menus yourself ,这比它值得的工作多得多(相信我)。

也许您可以在“左”和“右”类别下复制编号的项目?只要您为每个菜单项指定一个唯一 ID,在代码中区分它们就不成问题。

但是您仍然需要找到一些方法来指示“左”和“右”是列标题,并且应该与它们下面的项目区别对待。我想您可以禁用它们和/或以粗体绘制它们,但这仍然不能保证产生直观的 UI。

更好的是,我会建议将您的“创意”UI 设计强制症保持在最低限度,而只是添加另一个顶级菜单。用户知道如何使用顶级菜单。他们已经掌握了这种心智模型。他们真的不知道如何使用您奇怪的自定义菜单,任何奇怪的东西都可能经常让您的用户感到困惑。

用户也(某种程度上)了解子菜单,因此您仍然可以拥有一个包含“左”和“右”项的顶级菜单,它们本身显示包含编号项的子菜单。但通常的规则适用——不要嵌套太深,等等。

在 OS X 上,我见过类似下面的菜单结构:

它在用户习惯的地方运行良好。作为一个喜欢看到事物正确嵌套和分类的程序员,我自己也很喜欢。但我不确定它对 Windows 用户来说有多直观,对他们来说这会很不寻常。您必须进行一些可用性测试。

关于winapi - 如何在 MFC 中创建一个包含 2 个项目的行的菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11669681/

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