Allocsysstring в элементе управления деревом
Привет,
у меня вопрос относительно вставка элемента управления "дерево", как указано ниже:
m_cTreeCtrl.InsertItem(TVIF_TEXT | TVIF_IMAGE |
TVIF_SELECTEDIMAGE
| TVIF_PARAM, strTemp, 0, 0, 0, 0, (LPARAM)(LPCTSTR)(LPCTSTR)strParamval, m_hMatNode, TVI_LAST);
здесь вставляется strparamval
когда я получаю данные я не могу получить данные как указано ниже:
Элемент TVITEMEX;
item.mask = TVIF_PARAM;
пункт.hItem = hChildItem;
TreeView_GetItem(m_cTreeCtrl, &item);
CString strParam = (LPCTSTR)элемент.параметр lparam;
это цикл for, поэтому функция будет вызываться очень много раз. когда я держал ниже код он работал как указано ниже:
m_cTreeCtrl.InsertItem(TVIF_TEXT | TVIF_IMAGE |
TVIF_SELECTEDIMAGE| TVIF_PARAM, strTemp, 0, 0, 0, 0,
(LPARAM)strParamval.AllocSysString(),
m_hMatNode, TVI_LAST);
но так как эта логика является циклом, когда я выделяю и sysfreestring его дает неправильное значение в последний раз.
я сомневаюсь, что мы должны делать sysfreestring здесь, как это происходит в цикле for ?
Что я уже пробовал:
m_cTreeCtrl.InsertItem(TVIF_TEXT | TVIF_IMAGE |
TVIF_SELECTEDIMAGE| TVIF_PARAM, strTemp, 0, 0, 0, 0,
(LPARAM)strParamval.AllocSysString(),
m_hMatNode, TVI_LAST);
jeron1
Любая причина для 2 (LPCTSTR) ' s?
(LPARAM)(LPCTSTR)(LPCTSTR)strParamval
Richard MacCutchan
Смотрите комментарии в моем решении ниже. Если вы освободите выделенную память, то дерево не сможет ничего отобразить.