【问题标题】:Iterating over ListView Items win32 api迭代 ListView 项目 win32 api
【发布时间】:2025-12-08 00:40:01
【问题描述】:

我目前通过HWND lv = GetDlgItem(hDlg, MY_LISTVIEW) 处理我的列表视图

目前使用ListView_SetItemText(); 填充项目 我想根据已在外部更新的数据更新该列表视图中的每个项目。给定我的句柄,我将如何迭代每个列表视图项?

【问题讨论】:

    标签: c++ listview winapi listviewitem win32gui


    【解决方案1】:

    ListViews 使用从 0 开始的索引来标识项目,因此要对项目进行迭代,只需获取总数,然后运行从 0 开始计数的循环。例如,

    int iNumItems = ListView_GetItemCount(lv);
    for (int iIndex = 0; iIndex < iNumItems; ++iIndex)
    {
        // update this item
        ListView_SetItemText(lv, iIndex, 0, ...);
    }
    

    【讨论】:

    • 啊,这就是我要找的东西!网上淘的没有给我明确的答案谢谢!更新完项目后,我会调用什么函数来刷新窗口?
    • 它们会在您更新它们时自动刷新。如果需要,您实际上可以使用 SetWindowRedraw() 禁用此功能(关闭重绘,更新所有项目,然后重新打开),有时看起来会更好。
    • @Chris "网上搜索没有给我明确的答案" - 当一切都失败时,read the documentation!特别是关于List-View Items and Subitems的部分。