4

我目前正在尝试在 Win32 中创建一个列表视图控件并添加项目和子项目。我能够创建列表视图并添加标题和项目。LVM_INSERTITEM 消息工作得很好,它显示了不同的行。但是当我尝试使用 LVM_SETITEM 消息添加子项时,它们不会出现。所以我检查了SendMessage函数返回FALSE,所以函数失败了,但我不知道为什么!

同样奇怪的是,当我改用 LVM_SETITEMTEXT 消息时,它一开始似乎有效,但仅适用于第一行,而不适用于第二行或第三行。它总是从第一行更改子项的文本。

这是我正在使用的代码:

BOOL AddContactListview(HWND hWndListviewContact, CONTACT *AddContact, int cRecord)
{
LVITEM lvi;
char count[3];

//Insert Item
wsprintf(count, "%d", cRecord+1);
lvi.mask=LVIF_TEXT;
lvi.iItem=cRecord+1; //cRecord is raised 1 before every function call 
lvi.iSubItem=0;
lvi.pszText=count;
SendMessage(hWndListviewContact, LVM_INSERTITEM, 0, (LPARAM) &lvi);

//Add Subitems from a structure
lvi.iItem=cRecord+1;
lvi.iSubItem=1;
lvi.pszText=AddContact->firstname;
SendMessage(hWndListviewContact, LVM_SETITEM, 0,(LPARAM) &lvi);
lvi.iSubItem=2;
lvi.pszText=AddContact->surname;
SendMessage(hWndListviewContact, LVM_SETITEM, 0,(LPARAM) &lvi);
lvi.iSubItem=3;
lvi.pszText=AddContact->street;
SendMessage(hWndListviewContact, LVM_SETITEM, 0,(LPARAM) &lvi);
lvi.iSubItem=4;
lvi.pszText=AddContact->streetnumber;
SendMessage(hWndListviewContact, LVM_SETITEM, 0,(LPARAM) &lvi);
lvi.iSubItem=5;
lvi.pszText=AddContact->city;
SendMessage(hWndListviewContact, LVM_SETITEM, 0,(LPARAM) &lvi);
lvi.iSubItem=6;
lvi.pszText=AddContact->phonenumber;
SendMessage(hWndListviewContact, LVM_SETITEM, 0,(LPARAM) &lvi);

return TRUE;
}
4

0 回答 0