如何使用TreeView_SetItem更改 lParam

How to use TreeView_SetItem to change lParam?

本文关键字:更改 lParam SetItem 何使用 TreeView      更新时间:2023-10-16

我正在尝试使用 TreeView_SetItem 设置 lParam,但它不起作用。 以下测试代码使用 TreeView_GetItem 来显示 lParam 在使用 TreeView_SetItem 设置后保持不变。

targetItem之前已设置为 HTREEITEMTreeView_SetItemTreeView_GetItem 都返回 true,因此没有错误。

// targetitem has been set to an HTREEITEM which has an lParam equal to 1.
// I want to change it to 17
//
TVITEM tvItem = { 0 };
tvItem.mask = TVIF_PARAM | TVIF_HANDLE;
tvItem.hItem = targetItem;
tvItem.lParam = (LPARAM)17;
bool test1 = TreeView_SetItem(hWnd, targetItem, &tvItem);  // returns true
TVITEM tvi = { 0 };
tvi.mask = TVIF_PARAM | TVIF_HANDLE;
tvi.hItem = targetItem;
bool test2 = TreeView_GetItem(hWnd, &tvi);  // returns true
//
// tvi.lParam is unchanged after setting (still = 1, expecting 17)
好的找到了

TreeView_SetItem应该只有 2 个参数而不是 3 个参数。 不知道为什么它没有抛出错误。

bool test1 = TreeView_SetItem(hWnd, &tvItem);