MFC下CListCtrl控件获取选定行指定列的内容

本文总结了后端开发中遇到的问题,重点介绍了在MFC环境下使用CListCtrl控件如何在单选和多选情况下获取选定行的指定列内容。详细阐述了方法一和方法二,特别是利用CListCtrl::GetNextItem函数查找具有特定状态的项。

                                         后端开发过程遇到的问题总结(9)

1.单选情况下

方法一(只允许单选的情况下):

int nIndex = m_list.GetSelectionMark();   //获取选中行的行号
CString s = m_list.GetItemText(nIndex, 0);   //获取第0列内容

方法二:

int nIndex = m_list.GetNextItem(-1, LVNI_SELECTED);
CString s = m_list.GetItemText(nIndex, 0);

CListCtrl::GetNextItem

搜索具有指定属性并且具有与给定项相关的指定关系的列表视图项。

int GetNextItem(
    int nItem,
    int nFlags) const;

参数:

nItem
要开始搜索的项的索引,或者为-1,则查找与指定标志匹配的第一项。 指定的项本身将从搜索中排除。

nFlags
请求的项与指定项的几何关系,以及所请求项的状态。 几何关系可以是以下值之一:

  • LVNI_ABOVE 搜索指定项之上的项。

  • LVNI_ALL 按索引搜索后续项(默认值)。

  • LVNI_BELOW 搜索指定项下面的项。

  • LVNI_TOLEFT 在指定项的左侧搜索项。

  • LVNI_TORIGHT 在指定项的右侧搜索项。

状态可以是零,也可以是以下一个或多个值:

  • LVNI_DROPHILITED 项已设置 LVIS_DROPHILITED 状态标志。

  • LVNI_FOCUSED 项已设置 LVIS_FOCUSED 状态标志。

  • LVNI_SELECTED 项已设置 LVIS_SELECTED 状态标志。

如果项未设置所有指定的状态标志,则搜索将继续下一项。

返回值:

如果成功,则为下一个项的索引; 否则为-1。

2.多选情况下

CString str;
POSITION pos = list.GetFirstSelectedItemPosition(); //pos选中的首行位置

if (pos == NULL) {
    AfxMessageBox(L"no item were selected!");
}
	
else {
	while (pos) {            //如果选择多行
		int nIdx = -1;
		nIdx = list.GetNextSelectedItem(pos);
		if (nIdx >= 0 && nIdx < liste.GetItemCount()) {
			str = list.GetItemText(nIdx, 0);
		}
	}
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值