• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
代码的天空
博客园    首页    新随笔    联系   管理    订阅  订阅

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

ListView

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

 

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

Code
 1/**////////////////////////////////////////////////////////////
 2//功能:设置项的附加数据
 3//参数:
 4//    IN int nItemIndex 项索引
 5//    IN DOWRD dwData 附加数据的地址
 6//返回值:
 7//    TRUE   设置项的附加数据成功
 8//    FALSE  设置项的附加数据失败
 9BOOL MyListView::SetItemData(int nItemIndex, DOWRD dwData)
10{
11    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
18/**///////////////////////////////////////////////////////////
19//功能:获取项的附加数据
20//参数:
21//    IN int nItemIndex 项索引
22//返回值:
23//      附加数据地址
24DWORD MyListView::GetItemData(int nItemIndex)
25{
26    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}

 

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

posted @ 2008-10-28 08:35  黑翼  阅读(590)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3