如何获取CListCtrl选中多行的索引值

ts_chen1982 2014-03-25 09:19:27
如何获取CListCtrl选中多行的索引值?要能够处理以ctrl建的非连续选中
...全文
278 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2014-03-26
  • 打赏
  • 举报
回复

我这个MSDN是VS2008原版安装包中的, 安装完VS2008会自动提示安装.

不知道你这个中文版是哪里来的.
aegeanzorro 2014-03-26
  • 打赏
  • 举报
回复
引用 8 楼 xiaohuh421 的回复:
[quote=引用 6 楼 aegeanzorro 的回复:] 你确定不是自己安装的msdn?
"CListCtrl" 真是汗, 你都不看仔细. 你看你输入的什么. CtrlList 当然没有这个东西了[/quote]发错了 看图二
xiaohuh421 2014-03-26
  • 打赏
  • 举报
回复
引用 6 楼 aegeanzorro 的回复:
你确定不是自己安装的msdn?
"CListCtrl" 真是汗, 你都不看仔细. 你看你输入的什么. CtrlList 当然没有这个东西了
aegeanzorro 2014-03-26
  • 打赏
  • 举报
回复
引用 5 楼 xiaohuh421 的回复:
[quote=引用 2 楼 aegeanzorro 的回复:]
你说的msdn是论坛还是类库?为什么我的2008的魔术队你找不到?


当然是VS2008自带的MSDN文档啊,

VS2008-->帮助--->索引-->输入"CListCtrl" 选择members 就可以看到其成员列表, --->再选择"GetFirstSelectedItemPosition"就可以看到我帖出的例子.[/quote]
aegeanzorro 2014-03-26
  • 打赏
  • 举报
回复
引用 5 楼 xiaohuh421 的回复:
[quote=引用 2 楼 aegeanzorro 的回复:]
你说的msdn是论坛还是类库?为什么我的2008的魔术队你找不到?


当然是VS2008自带的MSDN文档啊,

VS2008-->帮助--->索引-->输入"CListCtrl" 选择members 就可以看到其成员列表, --->再选择"GetFirstSelectedItemPosition"就可以看到我帖出的例子.[/quote]
你确定不是自己安装的msdn?
ts_chen1982 2014-03-25
  • 打赏
  • 举报
回复
解决了,在NM_CLICK事件中处理,之前想复杂了
ts_chen1982 2014-03-25
  • 打赏
  • 举报
回复
放在什么地方?
aegeanzorro 2014-03-25
  • 打赏
  • 举报
回复
引用 1 楼 xiaohuh421 的回复:
例子: 来自MSDN POSITION pos = m_myListCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) { TRACE(_T("No items were selected!\n")); } else { while (pos) { int nItem = m_myListCtrl.GetNextSelectedItem(pos); TRACE(_T("Item %d was selected!\n"), nItem); // you could do your own processing on nItem here } } 注意: 如果你在遍历的时候需要删除选中的项, 因为删除一项后全部选中项的索引位置都会改变. 的以需要把循环里的GetNextSelectedItem修改成GetFirstSelectedItemPosition即, 总是去获取第一个选中, 然后删除掉. 友情提示, 楼主应该多看MSDN. 这些在上面都有. 你只需要搜索CListCtrl 然后查看其成员就可以看到了.
你说的msdn是论坛还是类库?为什么我的2008的魔术队你找不到?
xiaohuh421 2014-03-25
  • 打赏
  • 举报
回复
例子: 来自MSDN POSITION pos = m_myListCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) { TRACE(_T("No items were selected!\n")); } else { while (pos) { int nItem = m_myListCtrl.GetNextSelectedItem(pos); TRACE(_T("Item %d was selected!\n"), nItem); // you could do your own processing on nItem here } } 注意: 如果你在遍历的时候需要删除选中的项, 因为删除一项后全部选中项的索引位置都会改变. 的以需要把循环里的GetNextSelectedItem修改成GetFirstSelectedItemPosition即, 总是去获取第一个选中, 然后删除掉. 友情提示, 楼主应该多看MSDN. 这些在上面都有. 你只需要搜索CListCtrl 然后查看其成员就可以看到了.
xiaohuh421 2014-03-25
  • 打赏
  • 举报
回复
引用 2 楼 aegeanzorro 的回复:
你说的msdn是论坛还是类库?为什么我的2008的魔术队你找不到?
当然是VS2008自带的MSDN文档啊, VS2008-->帮助--->索引-->输入"CListCtrl" 选择members 就可以看到其成员列表, --->再选择"GetFirstSelectedItemPosition"就可以看到我帖出的例子.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧