gpt4 book ai didi

c++ - 如何将用户数据附加到 ListView 中的每个项目? C++ Win32

转载 作者:搜寻专家 更新时间:2023-10-31 00:47:48 26 4
gpt4 key购买 nike

我想我可以使用 LVITEM 结构 LPARAM 将指针附加到我的类,但我似乎无法让它工作!

这是我的代码的主要部分:

创建 ListView :

hlvQuiz = CreateChild(WC_LISTVIEW, "",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | LVS_ICON | LVS_AUTOARRANGE,
0, 0, 320, 240, m_hwnd, FontNormal);

添加项目:

if (vQuizes.size() > 0)
{
LVITEM lvi;
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.cchTextMax = QUIZSTRLEN;

for (unsigned int i = 0; i < vQuizes.size(); i++)
{
lvi.lParam = (LPARAM)&vQuizes[i]; // adding pointer to lparam
lvi.pszText = vQuizes[i].szName;
ListView_InsertItem(hlvQuiz, &lvi);
}
}

然后当我从 LPARAM 取回我的类(class)时:

        LVITEM lvi;
lvi.iItem = ListView_GetNextItem(hwnd, -1, LVNI_SELECTED);
lvi.iSubItem = 0;

if (ListView_GetItem(fm->hlvQuiz, &lvi) == TRUE)
{
Quiz* q = (Quiz*)lvi.lParam;
if (q != NULL) // i get stopped here because my pointer is NULL
if (Exists(q->szPath) == IS_FILE)
ShellExecute(NULL, "edit", q->szPath, NULL, NULL, SW_SHOWNORMAL);
}

我做错了什么吗? ListView 创建良好,项目添加,但指向我放在 LPARAM 值中的类的指针似乎被忽略,或者在我取消引用它时被更改

最佳答案

我以前没有在这么低的级别工作过,但我怀疑您需要将 LVITEM 结构的掩码成员设置为 LVIF_PARAM(以及您需要的任何其他适当的值)以调用 ListView_GetItem。

关于c++ - 如何将用户数据附加到 ListView 中的每个项目? C++ Win32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3473511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com