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