ListView 中为每个 ListItem 添加不在界面上显示附加数据

本文介绍如何使用自定义的MyListView类来为Windows SDK中的ListView设置和获取附加数据。通过发送消息给ListView控件,可以有效地将额外的数据与每个列表项关联起来。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:当我们使用 WINDOWS SDK 中的 ListView 时总是有很多附加数据,而这些附加数据又不需要显示在界面上,并且这些附加数据又是关联对应ListView中的每一个ListItem。当时我在使用的时候也是遇到了这样的问题,没有想到好的解决方法,用vector来保存相应的数据,结果弄出了一堆问题。

 

我们假设封装了一个 MyListView 类,类的主要数据成员为 ListView的 Handle

ContractedBlock.gifExpandedBlockStart.gifCode
 1ExpandedBlockStart.gifContractedBlock.gif/**////////////////////////////////////////////////////////////
 2//功能:设置项的附加数据
 3//参数:
 4//    IN int nItemIndex 项索引
 5//    IN DOWRD dwData 附加数据的地址
 6//返回值:
 7//    TRUE   设置项的附加数据成功
 8//    FALSE  设置项的附加数据失败
 9BOOL MyListView::SetItemData(int nItemIndex, DOWRD dwData)
10ExpandedBlockStart.gifContractedBlock.gif{
11ExpandedSubBlockStart.gifContractedSubBlock.gif    LVITEM lvi = {0};
12    lvi.mask = LVIF_PARAM; //这里是一个MARK值,标志LVITEM 的 lParam 成员有效
13    lvi.lParam = (LPARAM)dwData;
14
15    return SendMessage(m_hListView, LVM_SETITEM, 0, (LPARAM)&lvi);
16}

17
18ExpandedBlockStart.gifContractedBlock.gif/**///////////////////////////////////////////////////////////
19//功能:获取项的附加数据
20//参数:
21//    IN int nItemIndex 项索引
22//返回值:
23//      附加数据地址
24DWORD MyListView::GetItemData(int nItemIndex)
25ExpandedBlockStart.gifContractedBlock.gif{
26ExpandedSubBlockStart.gifContractedSubBlock.gif    LVITEM lvi = {0};
27    lvi.mask = LVIF_PARAM; //这里是一个MARK值,标志LVITEM 的 lParam 成员有效
28
29    return SendMessage(m_hListView, LVM_GETITEM, 0, (LPARAM)&lvi);
30
31    return lvi.lParam;
32}

 

通过这样的实现,就是可以得到我们想要的结果,添加附加数据的时候只要把数据的地址传递进去,用的时候取回来即可。

转载于:https://www.cnblogs.com/yejiansnake/archive/2008/10/28/ListView.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值