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); 
   }
}

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