20. oktober 2004 - 14:17Der er
7 kommentarer og 1 løsning
kan man få et TVITEM ud af et TreeView?
Hej
Man kan indsætte et TVITEM i en TVINSERTSTRUCT som så kan indsættes i et TreeView via ::TreeView_InsertItem(...), denne returnerer så et handle; HTREEITEM. Men hvordan kommer man tilbage igen, fra HTREEITEM til et TVITEM??
Pointen er, at jeg holder en pointer i TVITEM.lParam til en klasse som jeg gerne vil til tilgå. På diverse eventhandlere (ex. OnTvnSelchanged) får man får man leveret en LPNMTREEVIEW hvor man via ->itemNew.lParam kan få fat i det relevante TVITEM.lParam. Men når jeg udenfor en eventhandler gerne vil cykle igennem TreeView'et via bla. ::TreeView_GetNextSibling(...) får jeg kun fat i HTREEITEMS som jeg ikke ved hvordan man konverterer til noget brugbart.
ITreeItem* info; _bstr_t tmp = ""; BOOL success = FALSE; HTREEITEM current = TreeView_GetRoot ( m_tree.m_hWnd ); current = TreeView_GetNextSibling ( m_tree.m_hWnd, current );
while ( current!=0 ) { success = TreeView_GetItem ( m_tree.m_hWnd, &hitem ); if ( success==TRUE ) { info = (ITreeItem*) hitem.lParam; /* do stuff w info */ } current = TreeView_GetNextSibling ( m_tree.m_hWnd, current ); }
ITreeItem er min egen klasse som jeg vil ha' fat i og jeg kan fint få fat i den via LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); i mine notifikationshandlere.
Problemet i koden herover er at "success = TreeView_GetItem ( m_tree.m_hWnd, &hitem );" altid bliver 0.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.