漂亮菜单的实现原理与技巧

漂亮菜单的实现原理与技巧 Elliot Liu (aisnote@gmail.com) http://aisnote.com http://bbs.aisnote.com 摘要:概述性的介绍了如何自画windows上的菜单以及相关的技巧。本文适合对象为有一定Windows编程基础的人。 1、引言 菜单是Windows标准控件之一,菜单几乎在每个应用软件中都存在。MS提供的默认菜单是比较难看的,但MS自己制作的程序比如Office等,用的菜单却很漂亮,而且一般不是默认的标准菜单(运用DrawMenuBar)。 从office97开始,用的是rebar里面嵌入一个CommandBar来模拟菜单。这个可以用spy++抓一下就知道了,这样做的好处是可以到处停靠(Dock),熟悉Windows的人都知道,停靠是标准控件Toolbar的一个普通属性,所以我们可以猜测到CommandBar应该就是一个toolbar。当然从WTL的源码里也可以找到。 如何字画菜单的文章网上有很多: http://www.vckbase.com/document/listdoc.asp?mclsid=3&sclsid=303 这个URL都是关于如何自画菜单的,但对于初学者来说或者不熟悉Windows的人来说,还是有一定的难度的。但大致都分为如下二个步骤: l 处理WM_DRAWITEM 消息:判断是不是来自菜单,然后根据一个item,一特item的信息进行绘制,前提是你得了解一些GDI的基本绘制函数。这个过程是比较简单的。 l 为了处理菜单的边框,需要安装一个HOOK,去抓菜单的窗口,MSDN提供的菜单的Class Name是“#32768”。这个过程需要一定的Windows编程基础,以及HOOK的使用方式。有点经验的人只需看看MSDN,或者GOOGLE个例子来,就行了,上面的URL也有类似的文章。...