2012-07-26 102 views
3

我做了一些MF_MENUBARBREAK的实验,但是这样我只能在菜单的最顶层获得两列。如何在MFC中创建包含2个项目的菜单?

我想是这样的菜单:

这并不是说我想有两列完整的菜单,但有两个菜单(左和右)在第一线项目。其他每一个条目都会影响其整个生产线。那可能吗?

回答

4

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

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

你不能有这样的(除非你嘲笑它在如漆。我只是做了):

         

相反,所有的一个后过来的项目,谢谢你已经设置的MF_MENUBARBREAK标志将显示在第二列。例如,如果“正确”的项目有MF_MENUBARBREAK标志设置,你的菜单看起来就像这样:

         

您无法通过“三公”得到物品“一”到看起来好像他们不在一列或另一列。如果你以前 “右”(一个与MF_MENUBARBREAK标志)的添加项目,他们都将是第一列,例如:

         

…但他们仍然在一列。这是没有办法的,短缺owner-drawing the menus yourself,这是更多的工作比它值得(相信我)。

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

         

但你仍然需要找到某种方式来表明,“左”和“右”是列标题,应该从它们下面的项目区别对待。我想你可以禁用它们和/或用粗体绘制它们,但是仍然不能保证产生直观的用户界面。

更好的是,我会建议保持你的“创意”的UI设计强制到最低限度,只是增加另一个顶级菜单。用户知道如何使用顶级菜单。他们已经掌握了这种心智模式。他们真的不知道如何使用奇怪的自定义菜单,而任何奇怪的事情都可能会让用户更频繁地出现。

         

用户还(在某种程度上)了解子菜单,所以你仍然可以有“左”和“右”的单品的顶级菜单显示自己的子包含您的编号项目的菜单。但是,通常的规则 - 不要窝的东西太深,等

         

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

         

它运作良好,在那里,用户都习惯了。作为一个喜欢将事情正确嵌套和分类的程序员,我自己也很喜欢。但我不确定它会对Windows用户有多直观,对于这些用户来说,这是非常不寻常的。你将不得不做一些可用性测试。

+0

我没有提到,但菜单是一个弹出窗口,在某些情况下,不应该显示左侧和右侧ara。我结束了一个菜单,其中第一列有选项左和右;第二列有数字,如http://i.imgur.com/RT8yE.png?1上的图片。无论如何,感谢您的帮助。 – sergiol 2012-07-26 15:35:15

相关问题