所以我正在使用PostMessage(LVN_INSERTITEM,0,(LPARAM) lvitem)
. 而且我需要一种方法来区分 lvitem,以便稍后当我得到一个 lvitem 时,可以判断它是文件还是目录。我需要实现 using PostMessage
,所以我不确切知道何时插入该项目。我正在动态分配项目(将动态分配的内存指针存储在 LVITEM 结构的 lParam 属性中,因此在插入它之后,我会处理它的通知并取消分配从项目中获取地址的内存)。
问问题
809 次
2 回答
1
您可以使用结构的lParam
成员LVITEM
为您的列表项设置自定义数据:
// custom structure to hold some information
struct listItem {
int value;
char path[MAX_PATH];
};
// initialize a custom object to hold a value and a path
LVITEM lvi;
listItem* pItem = new listItem();
pItem->value = 666;
sprintf(pItem->path,"c:\\\\xampp\\htdocs");
// initialize a LVITEM object
memset(&lvi, 0, sizeof(lvi)),
lvi.pszText = "My Folder";
lvi.mask = LVIF_PARAM | LVIF_TEXT;
// lParam points to our custom object
lvi.lParam = (LPARAM)pItem;
SendMessage(g_hwndLV, LVM_INSERTITEM, 0, (LPARAM)&lvi);
注意:在这种情况下,您应该释放lParam
使用delete
.
于 2011-12-08T15:19:27.850 回答
0
您可以使用 设置任意数据CListCtrl::SetItemData
,但您应该使用该方法CListCtrl::InsertItem
而不是 using PostMessage
(这是一个低级 Win32 调用,而不是 MFC)。
于 2011-12-08T09:23:13.820 回答