我正在尝试在CListCtrl中查找包含特定数据的项目的索引。就我而言,数据(不是项目文本)是我比较项目的唯一标准。
我尝试使用CListCtrl::FindItem,但是该函数期望LVFINDINFOW*-我认为它不适合我。我还尝试了迭代clistctrl-再次失败。
提前感谢所有参与其中的人!
答案 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);
//...