Как получить значение lparam из дескриптора HTREEITEM
Я создал диалог с древовидным элементом управления, который извлекает данные в элемент управления списком при нажатии на любой конкретный узел древовидного элемента управления. Вот как я попытался вставить узлы.
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 CPSysInfoDlg::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)
Richard MacCutchan
Нет такого понятия. LPARAM-это тип, который передается в сообщениях Windows, поэтому его значение будет зависеть от типа сообщения и генерируется в момент создания сообщения.