BOOL CDualListManager::ProcessCmdMsg(int nID, int nCode) 
{
    BOOL bProcessed = TRUE;    // Add 
    if(nID == m_iIDAddButton)
        MoveSelected(m_AvailableList, m_AvailableArray, m_ChoosenArray, FALSE);
    
// Add All
    else if(nID == m_iIDAddAllButton)
        MoveAll(m_AvailableList, m_ChoosenList, m_AvailableArray, m_ChoosenArray);
    
// Remove 
    else if(nID == m_iIDRemoveButton)
        MoveSelected(m_ChoosenList, m_ChoosenArray, m_AvailableArray, TRUE);
    
// Remove All
    else if(nID == m_iIDRemoveAllButton)
        MoveAll(m_ChoosenList, m_AvailableList, m_ChoosenArray, m_AvailableArray);
    
// Move Down 
    else if(nID == m_iIDMoveDownButton)
        MoveUpOrDown(FALSE);
    
// Move Up
    else if(nID == m_iIDMoveUpButton)
        MoveUpOrDown(TRUE);
    
// Double Click on an item in the from list 
else if(nID == m_iIDAvailableList && nCode == LBN_DBLCLK)
        MoveSelected(m_AvailableList, m_AvailableArray, m_ChoosenArray, FALSE);
    
// Double Click on an item in the to list
else if(nID == m_iIDChoosenList && nCode == LBN_DBLCLK)
        MoveSelected(m_ChoosenList, m_ChoosenArray, m_AvailableArray, TRUE);
   
// Selection changed in the from list 
else if(nID == m_iIDAvailableList && nCode == LBN_SELCHANGE)
        EnableButtons();
    
// Selection changed in the to list 
else if(nID == m_iIDChoosenList && nCode == LBN_SELCHANGE)
        EnableButtons();
    else
        bProcessed = FALSE;    if(bProcessed == TRUE)
    {
        EnableButtons();
    }

     return bProcessed;
}这是处理消息的函数,是作者自己写的。
在OnCmdMsg()函数中调用他的。现在问题是,他不断地循环调用这个函数里面的各个消息,导致对话框一闪闪的,最后停下来的时候,所有的控件都变成禁用状态了。我就是模仿他原来的做的,感觉没任何问题,控件的属性也都一样。

解决方案 »

  1.   

    用switch case语句可能会好些吧。。其他的没看出什么问题
      

  2.   

    "不断地循环调用这个函数里面的各个消息"表示这个函数产生了新的OnCmdMsg()!
      

  3.   

     CToolBarCtrl::EnableButton
    BOOL EnableButton( int nID, BOOL bEnable = TRUE );Return ValueNonzero if successful; otherwise zero.ParametersnIDCommand identifier of the button to enable or disable.bEnableTRUE to enable the button; FALSE to disable the button.