在CListCtrl中搜索项目

时间:2020-05-01 11:38:02

标签: c++ winapi visual-c++ mfc clistctrl

我正在尝试在CListCtrl中查找包含特定数据的项目的索引。就我而言,数据(不是项目文本)是我比较项目的唯一标准。

我尝试使用CListCtrl::FindItem,但是该函数期望LVFINDINFOW*-我认为它不适合我。我还尝试了迭代clistctrl-再次失败。

提前感谢所有参与其中的人!

1 个答案:

答案 0 :(得分:3)

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

备注

该值是LVITEM结构的lParam成员,如 在Windows SDK中进行了说明。

因此,如果要搜索具有给定数据的项目,请将flags结构的LVFINDINFOW成员设置为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);
//...