mfc中list control控件GetNextSelectedItem()函数的用法
POSITIONpos=m_list.GetFirstSelectedItemPosition();while(pos){nItem=m_list.GetNextSele...
POSITION pos = m_list.GetFirstSelectedItemPosition();
while (pos)
{
nItem = m_list.GetNextSelectedItem(pos);
}
我测试时,nItem是得到的选中条目的索引,我把while改成if后效果是一样的。请熟悉这块儿的朋友说说这是为什么呢?我看了GetNextSelectedItem()的说明,但是还是很糊涂啊。 展开
while (pos)
{
nItem = m_list.GetNextSelectedItem(pos);
}
我测试时,nItem是得到的选中条目的索引,我把while改成if后效果是一样的。请熟悉这块儿的朋友说说这是为什么呢?我看了GetNextSelectedItem()的说明,但是还是很糊涂啊。 展开
2个回答
展开全部
GetFirstSelectedItemPosition获得的是选中元素的位置;
GetNextSelectedItem获得的是选中元素的索引;
这两个函数与你使用while和if是没有关系的,为什么可以获得Item的索引是由于ListCtrl已经封装好了,其内部实现就是通过这两个接口返回你选中元素的索引,你直接用就可以了。
GetNextSelectedItem获得的是选中元素的索引;
这两个函数与你使用while和if是没有关系的,为什么可以获得Item的索引是由于ListCtrl已经封装好了,其内部实现就是通过这两个接口返回你选中元素的索引,你直接用就可以了。
追问
我刚知道了。while是用于选中多个的时候。在list列表中按ctrl再选中选项,这样可以选中多个。如果用if只会返回选中的第一项,用while可以把所有选中的项都遍历一遍,最终指向选中的最后一项。
推荐于2016-04-15 · 知道合伙人软件行家
关注
展开全部
CListCtrl* pListCtrl=(CListCtrl*)GetDlgItem(IDC_YOURLISTCONTROL);
ASSERT(pListCtrl !=NULL)
POSITION pos = pList->GetFirstSelectedItemPosition(); // 获取第一个节点
if (pos==NULL)
TRACE0("No items were selected!\n")
else
{
while (pos)
{
int nItem=pList->GetNextSelectedItem(pos); // 通过GetNextSelectedItem遍历
TRACE1("item %d was Selected!\n",nItem);
//you could do your processing on nItem here
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询