CListCtrl列表視圖(二)

1.     選中列表視圖中的所有行

 

 

實現代碼:

void CServerDlg::OnModify() 
{
         m_ctlUserList.SetFocus(); /**< 保證列表視圖擁有焦點。*/
         int nIndex = m_ctlUserList.GetTopIndex();    /**< 獲得列表視圖中第一個條目的索引(從0開始)。*/
         int countOfItems = m_ctlUserList.GetItemCount(); /**< 獲得列表中的條目總算。注意這裏不能用GetCountPerPage.*/
         for (; nIndex<countOfItems; nIndex++)
         {
                   m_ctlUserList.SetItemState(nIndex, LVIS_SELECTED, LVIS_SELECTED);/**< nIndex指向的條目設定爲選擇狀態。*/
                   ASSERT(m_ctlUserList.GetItemState(nIndex, LVIS_SELECTED) == LVIS_SELECTED);
         }        
}

2:選中列表視圖中的某一行,並使該行獲得焦點:

代碼:

void CServerDlg::OnModify() 
{
 m_ctlUserList.SetFocus(); /**< 保證列表視圖擁有焦點。*/
 int nIndex = m_ctlUserList.GetTopIndex();    /**< 獲得列表視圖中第一個條目的索引(從0開始)。*/
 m_ctlUserList.SetItemState(nIndex+3, LVIS_SELECTED|LVIS_FOCUSED,
     LVIS_SELECTED|LVIS_FOCUSED);
 ASSERT(m_ctlUserList.GetItemState(nIndex+3, LVIS_FOCUSED) == LVIS_FOCUSED);
}
3:得到當前被選中的條目的行數:
注意:選中一個或多個項目時,會發送LVN_ITEMCHANGED消息。
 int n = m_ctlUserList.GetSelectedCount();

4:對所有選中的行進行更新:

// The pointer to my list view control.
extern CListCtrl* pmyListCtrl;

UINT i, uSelectedCount = pmyListCtrl->GetSelectedCount();
int  nItem = -1;

// Update all of the selected items.
if (uSelectedCount > 0)
{
   for (i=0;i < uSelectedCount;i++)
   {
      nItem = pmyListCtrl->GetNextItem(nItem, LVNI_SELECTED);
      ASSERT(nItem != -1);
      pmyListCtrl->Update(nItem); 
   }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章