在 CListCtrl 中搜索项目

Search for a item in CListCtrl

我正在尝试在 CListCtrl 中查找具有特定数据的项目的索引。在我的例子中,数据(不是项目文本)是我比较项目的唯一标准。

我尝试使用 CListCtrl::FindItem, but the function expects LVFINDINFOW* - 我认为它不适合我。我还尝试迭代 clistctrl - 再次失败。

提前感谢所有参与的人!

当您使用 SetItemData 成员函数为 CListCtrl 中的项目设置 'data' 时,您 实际上 设置 lParam 其关联 LVITEM 结构的字段,如上面链接的文档中所示:

Remarks

This value is the lParam member of the LVITEM structure, as described in the Windows SDK.

因此,如果要搜索具有给定数据的项目,请将 LVFINDINFOW 结构的 flags 成员设置为 LVFI_PARAM ,并将其 lParam字段到您要查找的数据值;然后使用该结构调用 FindItem 函数:

LVFINDINFOW findInfo;
LPARAM searchData = 42; // Or whatever you're looking for
findInfo.flags = LVFI_PARAM;
findInfo.lParam = searchData;
int dataPos = myListCtrl.FindItem(-1, &findInfo);
//...