要用到子分类的技术,由于程序很长,所以我先给你个大致思路,如果需要源代码的例子请发EMAIL:[email protected]
在windows系统里,每个窗口、控件都有一个系统窗口函数用来处理系统发给它的各种消息,而用API函数setwindowslong,系统允许你安装一个自己的窗口函数,在系统之前先处理某些你要处理的消息,不过在你自己的窗口函数结束时要用API函数callwindowproc来调用一下系统的窗口函数以便系统把你不要处理的消息处理完。当鼠标在菜单上移动时,当鼠标进入某一菜单项,系统会发一个WM_MENUSELECT(可能写错了,因为我手头没有资料,不过大致是这样写的,你可以查一下VB的API浏览器)消息到窗口函数,其中有一个wparam参数的低16位指出了这个菜单项的索引号,高16位是菜单句柄,所以在你的自定义窗口函数里你就可以通过截获这个消息并进行处理以便达到你要的效果。当高16位为0时,鼠标是在主菜单条[文件 编辑 查看 ... 窗口 帮助]上移动,否则为子菜单项。菜单项索引号的编法是主菜单是从0开始,子菜单项从2开始,每隔一个主菜单项的加2,同一个主菜单项里的各相邻项间加1,注意的是分隔条也算一个菜单项,也要占用一个索引号。好了,现在一切OK了,再有不清楚的地方可以去查一下API函数的说明书和微软MSDN光盘里关于窗口子分类技术的说明,再不行的话发个EMAIL给我,我把例子程序发一个给你。