現在、Win32 でリストビュー コントロールを作成し、項目とサブ項目を追加しようとしています。リストビューを作成し、ヘッダーと項目を追加できました。LVM_INSERITEM メッセージはまったく問題なく機能しており、さまざまな行が表示されます。しかし、LVM_SETITEM メッセージでサブアイテムを追加しようとすると、表示されません。確認したところ、SendMessage 関数が FALSE を返したため、関数は失敗しましたが、理由がわかりません!
また、代わりに LVM_SETITEMTEXT メッセージを使用すると、最初は機能するように見えますが、最初の行のみで、2 行目または 3 行目では機能しないようです。サブアイテムのテキストは常に最初の行から変更されます。
これは私が使用しているコードです:
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;
}