2012-02-08 51 views
1

有很多与定制对话窗口主菜单相关的文章,包括“自定义绘制”菜单。但他们似乎都没有回答我的问题。Windows对话框主菜单的自定义位置

我有有(无边框)窗口中的自定义绘制手工标题栏:

我需要这块“肥肉”标题栏下,莫名其妙地显示主菜单。我怎么能这样做,使用MFC?默认情况下,“本机”菜单似乎只能位于对话窗口客户区的顶部(或者我错了吗?)。有没有解决我的问题? 如果有人可以提供一些与我的问题有关的链接,我将不胜感激!我见过很多实现这个功能的产品,例如Ontrack想到了,但从来没有就如何实现这一点做过任何解释。 谢谢!

回答

1

我需要在这个“胖”标题栏下以某种方式显示主菜单。

根据您发布的图片,这正是其中正在绘制的位置。

默认情况下,“本机”菜单似乎只能位于对话窗口客户区的顶部(或者我错了吗?)。

不,这是正确的。该菜单将自动绘制在菜单栏所属的位置:窗口顶部,标题栏正下方。

你已经决定通过重新实现非客户区来搞砸你的应用程序的默认设置并把可用性扔到地狱。这意味着你不能依靠Windows来为你绘制这些元素。相反,您需要承担自己绘制所有这些事情的责任,这需要您编写代码才能完成。我不知道“Ontrack”是什么,但是任何执行此操作的应用程序都是自己绘制菜单的应用程序。

另一个受欢迎的选项(由Internet Explorer使用一段时间)是使用钢筋控制创建自己的菜单状对象。这具有集成到现有工具栏控件并允许用户根据需要重新排列项目的优点。它就像编写自己的菜单控件一样,具有不符合标准平台约定和用户期望的缺点(尽管它可能比你自己想象的要好得多)。有一个如何操作文章here on MSDN

我怀疑在进行这个项目时,你可能会咬掉更多的东西而不是咀嚼。请记住,几乎没有(如果有的话)绘制自己的标题栏的原因。正如你所看到的,符合你的平台的标准期望对程序员来说通常更容易,并且更好地被用户接受。

+0

科迪,感谢您的详细解答。我会深入研究这些菜单工具栏,它似乎是我需要的。这个“截图”实际上是在Photoshop中进行的,以显示我想要得到的:-)。 – justme11 2012-02-08 19:35:18