在 ListView 中添加一个新行
Add a new row into ListView
我正在使用以下代码将新行添加到两列 ListView 中:
// First column
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.pszText = "Some Name";
lvi.iItem = 0;
lvi.iSubItem = 0;
SendMessage(hListView, LVM_INSERTITEM, 0, (LPARAM)&lvi);
// Second column
lvi.mask = LVIF_TEXT;
lvi.pszText = "Some Address";
lvi.iItem = 0;
lvi.iSubItem = 1;
SendMessage(hListView, LVM_SETITEM, 0, (LPARAM)&lvi);
我的问题是如何添加新行(到非空的 ListView 中),我尝试将 lvi.iItem
的值增加 1
,例如,如果我有5 行,我想添加一个新行,我将 lvi.iItem
的值设置为 5
。
这种方法奏效了,但我不确定它是正确的还是我做错了什么。
LVM_INSERTITEM
returns 新项目的索引。发送 LVM_SETITEM
时使用该索引。此外,LVM_INSERTITEM
在指定的 iItem
索引处插入新项,因此如果 iItem
为 0,则新项插入到列表的前面。要改为在列表末尾插入,请将 iItem
设置为 LVM_GETITEMCOUNT
:
的结果
// First column
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.pszText = "Some Name";
lvi.iItem = SendMessage(hListView, LVM_GETITEMCOUNT, 0, 0);
lvi.iSubItem = 0;
int index = SendMessage(hListView, LVM_INSERTITEM, 0, (LPARAM)&lvi);
if (index != -1)
{
// Second column
lvi.mask = LVIF_TEXT;
lvi.pszText = "Some Address";
lvi.iItem = index;
lvi.iSubItem = 1;
SendMessage(hListView, LVM_SETITEM, 0, (LPARAM)&lvi);
}
我正在使用以下代码将新行添加到两列 ListView 中:
// First column
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.pszText = "Some Name";
lvi.iItem = 0;
lvi.iSubItem = 0;
SendMessage(hListView, LVM_INSERTITEM, 0, (LPARAM)&lvi);
// Second column
lvi.mask = LVIF_TEXT;
lvi.pszText = "Some Address";
lvi.iItem = 0;
lvi.iSubItem = 1;
SendMessage(hListView, LVM_SETITEM, 0, (LPARAM)&lvi);
我的问题是如何添加新行(到非空的 ListView 中),我尝试将 lvi.iItem
的值增加 1
,例如,如果我有5 行,我想添加一个新行,我将 lvi.iItem
的值设置为 5
。
这种方法奏效了,但我不确定它是正确的还是我做错了什么。
LVM_INSERTITEM
returns 新项目的索引。发送 LVM_SETITEM
时使用该索引。此外,LVM_INSERTITEM
在指定的 iItem
索引处插入新项,因此如果 iItem
为 0,则新项插入到列表的前面。要改为在列表末尾插入,请将 iItem
设置为 LVM_GETITEMCOUNT
:
// First column
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.pszText = "Some Name";
lvi.iItem = SendMessage(hListView, LVM_GETITEMCOUNT, 0, 0);
lvi.iSubItem = 0;
int index = SendMessage(hListView, LVM_INSERTITEM, 0, (LPARAM)&lvi);
if (index != -1)
{
// Second column
lvi.mask = LVIF_TEXT;
lvi.pszText = "Some Address";
lvi.iItem = index;
lvi.iSubItem = 1;
SendMessage(hListView, LVM_SETITEM, 0, (LPARAM)&lvi);
}