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()的说明,但是还是很糊涂啊。
展开
 我来答
jellycgl
推荐于2016-06-25 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:879万
展开全部
GetFirstSelectedItemPosition获得的是选中元素的位置;

GetNextSelectedItem获得的是选中元素的索引;

这两个函数与你使用while和if是没有关系的,为什么可以获得Item的索引是由于ListCtrl已经封装好了,其内部实现就是通过这两个接口返回你选中元素的索引,你直接用就可以了。
追问
我刚知道了。while是用于选中多个的时候。在list列表中按ctrl再选中选项,这样可以选中多个。如果用if只会返回选中的第一项,用while可以把所有选中的项都遍历一遍,最终指向选中的最后一项。
lgao622
推荐于2016-04-15 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6548
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部
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
  }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式