【发布时间】:2021-02-23 12:59:11
【问题描述】:
我有一个 ListView,我需要在其中对多个选定的行执行操作。我开始使用ListView_GetNextItem(hLV, -1, LVNI_SELECTED | LVNI_PREVIOUS) 在选定的行中循环。但是在调试时,会返回第一个选定行的索引,而不是最后一个。仅使用LVNI_PREVIOUS 标志时也是如此。
MS documentation 表示:
Windows Vista 和更高版本: 搜索在 wParam 中指定的项目之前排序的项目。 LVNI_PREVIOUS 标志不是定向的(LVNI_ABOVE 将找到位于上方的项目,而 LVNI_PREVIOUS 将找到之前订购的项目。) LVNI_PREVIOUS 标志基本上颠倒了 LVM_GETNEXTITEM 或 执行的搜索逻辑LVM_GETNEXTITEMINDEX 消息。
为什么LVNI_PREVIOUS 不能按照描述的方式工作?难道是我用错了commctrlversion,因为它只说Vista及以上?
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
我以前从未尝试过使用
LVNI_PREVIOUS。向后迭代时,是否使用 ListView 的项目计数作为起始索引,而不是使用-1? -
它没有:只返回-1。
-
看来他们忘记实现了。
-
Vista之前的头文件中存在#define;我认为对 Vista 的引用只是他们“更新”他们的文档。参见例如LVM_GETHEADER,在 Vista 之前也存在。
标签: c listview winapi win32gui