VS2005的每个工具栏都有个定制工具栏按钮的弹出选择菜单,可以选择显示或隐藏该工具栏里的按钮;这个选择菜单是个特殊的弹出菜单:菜单显示后,用户可以多次点击某些菜单项;而不用像普通的弹出菜单,点击某一项后菜单就消失,需要重新点击弹出按钮来弹出菜单.
    我怀疑,VS2005的这种弹出菜单,可能使用以下的技术实现:
  1.不是使用普通的弹出菜单,而是使用比如dialog来模拟处理的;
  2.使用普通的弹出菜单,并使用HOOK;对菜单的点击响应做特殊处理;  我在实现上,采用的是方法2.但是,点击某个菜单项后,这个菜单项的UI状态始终得不到更新;除非,把鼠标移动到其它菜单项.而且查了MSDN,可以发送WM_PAINT的重绘窗体;但是没有什么WM_XXX的消息用于重绘菜单;难道菜单重绘要使用某些work around的办法.请各位达人解惑!!