UPDATE_COMMAND_UI
处理菜单对应的用户界面
COMMAND
处理该菜单对应的功能

解决方案 »

  1.   

    傳統 SDK 程式㆗要改變選單命令項狀態,可以呼叫 EnableMenuItem 或是
    CheckMenuItem ,但這使得程式雜亂無章,因為你沒有㆒個固定的位置和固定的原則處
    理命令項狀態。MFC 提供㆒種直覺並且仍舊依賴訊息觀念的方式,解決這個問題,這就
    是 UPDATE_COMMAND_UI 訊息。其設計理念是,每當選單被拉㆘並尚未顯示之前,
    其命令項(以及對應之工具列按鈕)都會收到 UPDATE_COMMAND_UI 訊息,這個訊
    息和 WM_COMMAND 有㆒樣的繞行路線,我們(程式員)只要在適當的類別㆗放置其
    處理函式,並在函式㆗做某些判斷,便可決定如何顯示命令項。
    這種方法的最大好處是,不但把問題的解決方式統㆒化,更因為 Framework 傳給
    UPDATE_COMMAND_UI 處理常式的參數是㆒個「指向 CCmdUI 物件的指標」,而
    CCmdUI 物件就代表著對應的選單命令項,因此你只需呼叫 CCmdUI 所準備的,專門
    用來處理命令項外觀的函式(如 Enable 或 SetCheck )即可。我們的工作量大為減輕。(选摘自《深入浅出MFC》第9章)
      

  2.   

    UPDATE_COMMAND_UI
    处理菜单对应的用户界面
    COMMAND
    处理该菜单对应的功能说得很好:)
    如果要使菜单变灰、或者在菜单项里面打勾
    用那个UPDATE_COMMAND_UI否则用command例子:
    void CMainFrame::OnUpdateSelectBlue(CCmdUI* pCmdUI) 
    {
    // TODO: Add your command update UI handler code here
    pCmdUI->SetCheck(true);//把菜单选中
    }