我用SDK写了一个 QQ菜单风格的自画菜单我想用CheckMenuItem及EnableMenuItem函数改变菜单项状态但只有在响应WM_INITMENUPOPUP,WM_MEASUREITEM,WM_DRAWITEM
消息时调用这两个函数有效当响应WM_COMMAND等其他消息时此两个函数调用不成功,返回0这是为什么?谢谢指教!!

解决方案 »

  1.   

    当你响应WM_COMMAND的时候菜单构造已经完成了啊.
      

  2.   

    可是,我以前在非自画菜单中曾用过这种方法响应WM_COMMAND消息改变菜单状态,如果真如你所说,那怎么动态改变菜单状态??请指教!!谢谢。我已测试过,调用函数时参数没有问题。
      

  3.   

    在响应WM_COMMAND的时候对菜单项目MenuItem的更改应该在下一次弹出的时候才会生效吧.另外自画菜单项目MenuItem被禁止后的状态是要靠自己画出来的,自画菜单的所有状态显示都是要靠自己去画的.
      

  4.   

    这些我知道,
    但是,菜单项的状态信息可以通过响应WM_DRAWITEM,消息时
    检测((LPDRAWITEMSTRUCT)lParam )->itemState的值获得
    然后根据它的值进行自画但是我调用那两个函数后,状态值没有改变。而且当调用后的下一次弹出时,状态值仍没有改变。这是为什么呢?????