我用下面的代码能够设置选中,呈高亮显示,取消选中也能够执行,但是取消选中后,用
m_lcList.GetSelectionMark()方法,仍然能够获得选中时的行好,我想要取消选中后,用m_lcList.GetSelectionMark()去取的话,能够得到 -1 ,即没有选中,请教如何做?//设置选中
mlcList.EnsureVisible(17, FALSE);
lcList.SetItemState(17,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED| LVIS_FOCUSED);//取消选中
m_lcList.SetItemState(2, 0, LVIS_SELECTED);m_lcList.SetItemState(0, 0, LVIS_SELECTED);

解决方案 »

  1.   

    m_lcList.GetItemState(2, State, LVIS_SELECTED);
    State &= (~LVIS_SELECTED);
    m_lcList.SetItemState(2, State, LVIS_SELECTED);
      

  2.   

    我是这样试了,好象还是不行啊?
    UINT  State;
    m_lcList.GetItemState(17, State);
    State &= (~LVIS_SELECTED);
    m_lcList.SetItemState(17, State, LVIS_SELECTED);
      

  3.   

    //去掉 CCListCtrl 所有项的选中状态
      for(int i = 0; i< m_listctrl.GetItemCount(); i++)
      {
        m_listctrl.SetItemState (i, 0, LVIS_SELECTED);
      }

    int nIndex = m_lstOutLine.GetSelectionMark();
    m_listctrl.SetItemState(nIndex, LVIS_SELECTED , LVIS_SELECTED);

    m_listctrl.SetItemState(-1,0,LVIS_SELECTED);
      

  4.   

    选中操作中不要加LVIS_FOCUSED;
    lcList.SetItemState(17,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED| LVIS_FOCUSED);
    替换为lcList.SetItemState(17,LVIS_SELECTED,LVIS_SELECTED);
    鼠标选中还是会留下最后一个选中的nItem号;
      

  5.   

    是要加 LVIS_FOCUSED 这个的,因为要高亮显示啊,