Я создал диалог с элементом управления деревом, который извлекает данные в элемент управления списком при нажатии на любой конкретный узел treecontrol. Вот как я попытался вставить узлы.получить значение lparam из htreeitem C++
CString *sCommonAppkey = new CString(_szApp + sIsPath);
HTREEITEM hrCommon = m_cTreeCtrl.InsertItem(TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM, _T("Common"), icoPlanit, icoPlanit, 0, 0, (LPARAM)(LPCTSTR)sCommonAppkey, NULL, NULL);
При щелчке на узле он направляется в обработчик события «OnTvnSelchangedExample» и данные выбираются из пути, указанного в параметре «LPARAM» в методе InsertItem из HTREEITEM.
void **CExample**::OnTvnSelchangedExample(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
LPARAM lp = pNMTreeView->itemNew.lParam;
CString *sTempKey = (CString *)lp;
CString path = sTempKey->GetBuffer();
}
Я могу получить доступ к значению lparam только в обработчике событий.
Теперь я хочу реализовать функцию поиска для данных всего дерева.
поэтому мне нужно значение lparam всех обработчиков деревьев последовательно, итерации через него, чтобы я мог искать конкретный текст в дереве. Итак, не нажимая на какой-либо узел дерева, есть ли возможность получить значение lparam для дескриптора дерева (HTREEITEM)
им жаль, если я прошу вас глупый вопрос. Но TreeView_GetItem() принимает дескриптор HWND и как я могу передать в нем дескриптор дерева – user3655089