我正在尝试使用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);

关于c++ - 如何使用TreeView_SetItem更改lParam?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42214959/

10-09 20:44