E
irgendwie mag mich das treeview nicht
HTREEITEM CTreeview::GetItem(UINT id){
// get the first root item
HTREEITEM item = reinterpret_cast<HTREEITEM>(::SendMessage(m_Handle, TVM_GETNEXTITEM, NULL, TVGN_ROOT));
// for store the item
TV_ITEM tviTemp;
tviTemp.mask = TVIF_HANDLE|TVIF_PARAM;
tviTemp.hItem = item; // add the first root item
// get the root item attributes - after this lParam = 0 (correct)
::SendMessage(m_Handle, TVM_GETITEM, NULL, reinterpret_cast<LPARAM>((static_cast<TV_ITEM *>(&tviTemp))));
// get next item
HTREEITEM NextItem = reinterpret_cast<HTREEITEM>(::SendMessage(m_Handle, TVM_GETNEXTITEM, TVGN_NEXT, reinterpret_cast<LPARAM>(static_cast<HTREEITEM>(item))));
// put the next item elements to the temp item
tviTemp.hItem = NextItem;
// get the item attributes - after this lParam = 0 (false)
::SendMessage(m_Handle, TVM_GETITEM, NULL, reinterpret_cast<LPARAM>((static_cast<TV_ITEM *>(&tviTemp))));
return item;
}
egal was ich mach, lParam ist immer 0, ein vergleich bringt nie etwas
hinzugefuegt hab ich die elemente so:
BOOL CTreeview::AddItem(DString Name, UINT ItemId, int ParentId){
TV_ITEM item;
item.mask = TVIF_TEXT;
item.pszText = (LPTSTR)Name.c_str();
item.lParam = ItemId;
TV_INSERTSTRUCT inserter;
inserter.item = item;
inserter.hParent = (ParentId != -1) ? GetItem(ParentId) : TVI_ROOT;
inserter.hInsertAfter = TVI_SORT;
::SendMessage(m_Handle, TVM_INSERTITEM, NULL, reinterpret_cast<LPARAM>(static_cast<LPTVINSERTSTRUCT>(&inserter)));
return TRUE;
}
.
.
.
m_Treeview.AddItem(_T("First"), 0);
m_Treeview.AddItem(_T("Second"), 1);
m_Treeview.AddItem(_T("Third"), 2);
ich werd langsam gefrustet
//DString == std::wstring
//dazuedit - ich habs, ich hab vergessen beim hinzufuegen das mask TVIF_PARAM zu setzen, die id's wurden gar nicht mitgespeichert
nu muss ich nur ueberlegen wie ich alle items durchgehen kann, auch subitems usw