我目前正在尝试在Win32中创建一个listview控件并添加项目和子项。我能够创建列表视图并添加标题和项目。 LVM_INSERTITEM消息完全正常,它显示不同的行。但是当我尝试使用LVM_SETITEM消息添加Subitems时,它们不会显示。所以我查了一下,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;
}