VC++ 關於 ON_UPDATE_COMMAND_UI 相關的作用.


ON_COMMAND_RANGE(ID_SORTING_GROUPBYTYPE, ID_SORTING_SORTBYACCESS, OnSort)
ON_UPDATE_COMMAND_UI_RANGE(ID_SORTING_GROUPBYTYPE, ID_SORTING_SORTBYACCESS, OnUpdateSort)


在上面的代碼中,其中第一個 ON_COMMAND_RANGE 的作用,是操作 指定ID范圍內的菜單在執行時的執行動作. 動作的內容就是 OnSort.也就是說,這里指定的一個范圍內的菜單一定是一個順序號的菜單,而且這些菜單具有相同的作用,比如按 某項排序,功能是相同的,只是排序依據不同而矣.

而第二個 ON_UPDATE_COMMAND_UI_RANGE 類似於 ON_UPDATE_COMMAND_UI的作用,只是這個宏是指定一定順序的操作函數.

當需要顯示時.  ON_UPDATE_COMMAND_UI_RANGE 會逐個排查每一個顯示項,可以在這里指定顯示的選擇項等.如

void CClassView::OnUpdateSort(CCmdUI* pCmdUI)
{
    pCmdUI->SetCheck(pCmdUI->m_nID == m_nCurrSort);
    
}

上述代碼的意思就是根據 m_nCurrSort 來指定選擇項的 選擇.

CCmdUI* pCmdUI  這里是指定正在更新的菜單的項目

當需要操作執行時,可以使用 ON_COMMAND_RANGE 宏中指定的 OnSort 如:

void CClassView::OnSort(UINT id)
{
    if (m_nCurrSort == id)
    {
        return;
    }

    m_nCurrSort = id;

    CClassViewMenuButton* pButton =  DYNAMIC_DOWNCAST(CClassViewMenuButton, m_wndToolBar.GetButton(0));

    if (pButton != NULL)
    {
        pButton->SetImage(GetCmdMgr()->GetCmdImage(m_nCurrSort));
        m_wndToolBar.Invalidate();
        m_wndToolBar.UpdateWindow();
    }

}

這里的id號,就是指的 真正點擊的 菜單的ID號.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM