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