呵呵,对,自己处理WM_DRAWITEM消息,自己画菜单!

解决方案 »

  1.   

    我设置了消息钩子,处理了WM_MENUSELECT消息,每想到还有一个WM_DRAWITEM 成功之后一定给分!!!
      

  2.   

    呵呵,在WM_MENUSELECT消息里只是决定菜单项的高度,宽度。真正绘制菜单是在WM_DRAWITEM 里。
    哦,对了,菜单样式要用MF_OWNERDRAW 哦
      

  3.   

    再次感谢!果然高手!我还有一个问题,就是我能得到菜单项的RECT吗?
      

  4.   

    呵呵,lparam 传回的参数就是一个DRAWITEMSTRUCT结构指针
    Public Type DRAWITEMSTRUCT
            CtlType As Long
            CtlID As Long
            itemID As Long
            itemAction As Long
            itemState As Long
            hwndItem As Long
            hdc As Long
            rcItem As Rect            '你想要的RECT,:)
            itemData As Long
    End Type
      

  5.   

    我以前用GetMenuItemRect做的,总是只能得到顶级菜单的RECT
      

  6.   

    呵呵,用GetMenuItemRect应该也可以的吧。先用GetSubMenu获得子菜单句柄,再用GetMenuItemRect
      

  7.   

    兄弟确实这么做的,没准是我算错了?不会呀,每个子菜单都得到同一个RECT,
    很挠头啊,幸好今天遇到您了,不过还不能给分,要不跑了怎么办?
      

  8.   

    我编的自画菜单:下载:http://go6.163.com/910grtd/vb/wdzp/DrawMenu-S.zip
    界面:http://go6.163.com/910grtd/vb/wdzp/DrawMenu-S.gif
      

  9.   

    hehe,既然你没问题了,我下了,呵呵,我等不了了。