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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值