在 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);
//...
我正在尝试在 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);
//...