2017-02-13 12 views
1

Я пытаюсь установить lParam с помощью TreeView_SetItem, но он не работает. В следующем тестовом коде используется TreeView_GetItem, чтобы показать, что lParam не изменяется после установки TreeView_SetItem.Как использовать TreeView_SetItem для изменения lParam?

targetItem был поставлен на переднюю панель телефона HTREEITEM. Оба TreeView_SetItem и TreeView_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) 
+2

Дикой догадка: Если не '' tvItem.mask' содержит TVIF_HANDLE' в 'TreeView_SetItem' позвонить? – IInspectable

+0

Я добавил «TVIF_HANDLE» и все еще не работает. Обновлен код. – poby

+1

Действительно ли 'hWnd' дескриптор родительского диалога, а не дерева? –

ответ

1

ОК нашел. TreeView_SetItem должен иметь только 2 параметра. 3. Не знаю, почему это не вызвало ошибку.

bool test1 = TreeView_SetItem(hWnd, &tvItem);

 Смежные вопросы

  • Нет связанных вопросов^_^