在默认状态下,CListCtrl通过鼠标单击选中的是单行,但我们可以配合Ctrl和Shift键来选中多行,如果有多行数据被选中,那就要一项一项处理,怎么处理呢?看个例子吧!
while(m_listOption.GetSelectedCount() > 0)
{
POSITION pos = m_listOption.GetFirstSelectedItemPosition();
if (pos != NULL)
{
int nItem = m_listOption.GetNextSelectedItem(pos);
//在这里添加处理函数
}
}
说明:
1.m_listOption为CListCtrl的指针。
2.CListCtrl::GetSelectedCount
原型:UNIT GetSelectedCount() const
功能:获取列表视图控件中被选择的项的数目。
返回值:返回列表视图控件中被选择的项的数目。
3.CListCtrl::GetFirstSelectedItemPosition
原型:POSITION GetFirstSelectedItemPosition()
功能:在列表视图控件中获取第一个选择项的位置。
返回值:返回一个用于迭代或获取对象指针的POSITION值;如果没有选择任何项,那么将返回NULL。
4.CListCtrl::GetNextSelectedItem
原型:int GetNextSelectedItem(POSITION& pos) const
功能:获得通过pos标识的列表项的索引,然后将pos设置为POSITION 值。如果已经通过调用GetFirstSelectedItemPosition函数得到了初始位置,那么可以在不断的循环中使用GetNextSelectedItem函数。在此,必须确保POSITION值是有效的。否则,将插入Microsoft Foundation Class Library(Microsoft基础类库)的调试版的断言。
参数:pos通过前面调用GetNextSelectedItem函数或GetFirstSelectedItemPosition函数返回的POSITION值的参考。通过这次调用,它将更新为下一个位置值。
返回值:返回列表视图控件中被选择的下一项的索引值。
CListCtrl处理多行选择的方法
这篇博客介绍了如何在CListCtrl中处理选中多行数据的问题。通过配合Ctrl和Shift键,可以实现多行选择。文章提供了一个示例代码,使用GetSelectedCount、GetFirstSelectedItemPosition和GetNextSelectedItem等函数,循环遍历并处理每一项选中的数据。
2万+

被折叠的 条评论
为什么被折叠?



