以下是 ListView_InsertItem 函数的一般格式:
int ListView_InsertItem(
HWND hwnd,
const LVITEM *pitem
);
- 参数 hwnd 是列表视图控件的句柄。
- 参数 pitem 是一个指向 LVITEM 结构的指针,包含有关新项的信息。
LVITEM 结构的定义如下:
typedef struct tagLVITEM {
UINT mask;
int iItem;
int iSubItem;
UINT state;
UINT stateMask;
LPTSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
int iIndent;
#if (_WIN32_IE >= 0x0300)
int iGroupId;
UINT cColumns;
PUINT puColumns;
#endif
#if (_WIN32_WINNT >= 0x0501)
int piColFmt;
int iGroup;
#endif
} LVITEM, *PLVITEM;
- mask 是一个标志集,指定结构中哪些字段包含有效数据。
- iItem 是项的索引。
- iSubItem 是子项的索引。
- state 和 stateMask 是有关项状态的标志。
- pszText 是项的文本。
- cchTextMax 是 pszText 缓冲区的最大字符数。
- iImage 是与项关联的图像索引。
- lParam 是与项关联的应用程序定义的数据。
- iIndent 是项的缩进级别。
- iGroupId 是项的组标识符。
- cColumns 和 puColumns 是有关多列布局的信息。
- piColFmt 是有关列格式的信息。
- iGroup 是项所属的组的索引。
函数返回一个整数,表示新项的索引。如果插入失败,返回 -1。
以下是一个简单的示例代码,演示如何使用 ListView_InsertItem 函数:
#include <windows.h>
#include <commctrl.h>
int main() {
// 初始化 Common Controls Library
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&icex);
// 创建主窗口
HWND hwndMain = CreateWindowEx(0, WC_LISTVIEW, L"ListView_InsertItem Example",
WS_OVERLAPPEDWINDOW | LVS_REPORT, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
NULL, NULL, GetModuleHandle(NULL), NULL);
// 添加一列以便能够看到列表视图的显示
LVCOLUMN lvColumn;
lvColumn.mask = LVCF_TEXT | LVCF_WIDTH;
lvColumn.pszText = L"Column 1";
lvColumn.cx = 200;
ListView_InsertColumn(hwndMain, 0, &lvColumn);
// 添加项到列表视图
LVITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem = 0;
lvItem.iSubItem = 0;
lvItem.pszText = L"Item 1";
ListView_InsertItem(hwndMain, &lvItem);
// 显示窗口
ShowWindow(hwndMain, SW_SHOWNORMAL);
UpdateWindow(hwndMain);
// 进入消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
在这个示例中,创建了一个带有一个列的列表视图控件。ListView_InsertItem 函数用于添加一个项,设置项的文本为 "Item 1"。
转载请注明出处:http://www.zyzy.cn/article/detail/24741/Win32 API/Commctrl.h/ListView_InsertItem