请教UPDATE_COMMAND_UI命令的用法

解决方案 »

  1.   

    一般情况下我们用UPDATE_COMMAND_UI来修改菜单的状态(enable/disable, check/uncheck, change text)当我们点菜单的顶层菜单时,就是显示一个下拉的菜单的时候,在显示菜单前会发送WM_INITMENUPOPUP消息。而CFrameWnd::OnInitMenuPopup函数会刷新这个菜单项,同时如果有UPDATE_COMMAND_UI响应函数,则调用它。通过它来更新反应每个菜单的外观效果(enabled/disabled, checked/unchecked).
      

  2.   

    还有楼上翻译的基于对话框的UPDATE_COMMAND_UI 
    http://community.csdn.net/Expert/topic/3317/3317215.xml?temp=.3179438
      

  3.   

    MFC使用CCmdUI和ON_UPDATE_COMMAND_UI来调整按钮、状态条窗格和菜单项的状态,并且你可以自己扩展其它的UI项目。例如,当用户点击下拉箭头时,你可以根据程序的状态调整组合框或列表框的内容。CCmdUI::Enable是个虚拟函数,在对于菜单项的操作当中,它变成了::EnableMenuItem。 
    如果命令有一个处理器(ON_COMMAND),MFC enable菜单项;否则,MFC disable菜单项。你可以设置CFrameWnd::m_bAutoMenuEnable = FALSE重载这个行为,这样的话,所有菜单项都将被enable-不管有没有处理器。  
        所以,在MFC应用程序中,不要用EnableMenuItem来enable或disable菜单,而要使用ON_UPDATE_COMMAND_UI处理器来实现菜单的enable或disable。  如何enable/disable菜单项 
    http://www.vckbase.com/document/viewdoc.asp?id=185