Tree
-
Original erstellt von <Teradio>:
Du bist dumm
lern coden
debuggen
codenselber dumm! :p
Gibt es eine Funktion der Art :
HTREEITEM GetItemByString("Raum2");
danke
cu para
-
Ach Leute!
Jetzt geht das denn wirklich nicht??
Bitte helft mir!danke!
-
Weiss vielleicht jemand von euch, wie man einem Item ein Icon hinzufügt?
danke!
cu para
-
Kann das denn sein, dass das niemand weiss??
-
steht alles in der MSDN: [url] http://www.msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/treeview/treeview.asp [/url]
-
Also, da wär ich wieder...
Lange he, aber ich brauch es wieder.
Das mit den Icons ist längst geklärt.Problematik: Ich arbeite an einem Chat. Ich habe eine Treeview mit Räumen:
|-Raum1
|-Raum2
|-Raum3Jetzt bekomme ich vom Server eine Nachricht, dass in Raum1 der Client "Hans Wurst" eingetreten ist. Folglich sollte ich diesen unter Raum1 als Child einfügen.
Da ich diese Funktion benutze zum einfügen:
// function to add a user or a room HTREEITEM AddToTree(LPSTR lpszItem, HTREEITEM parent, HTREEITEM brother) { TV_ITEM tvi; TV_INSERTSTRUCT tvins; tvi.mask = TVIF_TEXT | TVIF_IMAGE; tvi.pszText = lpszItem; tvi.cchTextMax = lstrlen(lpszItem); tvi.iImage = 0; tvi.iSelectedImage = 0; tvins.item = tvi; if(brother)tvins.hInsertAfter = brother;else tvins.hInsertAfter = TVI_SORT; if(parent)tvins.hParent = parent; else tvins.hParent = TVI_ROOT; return((HTREEITEM)SendMessage(hTreeWnd, TVM_INSERTITEM, 0, (LPARAM)&tvins)); }
benötige ich dass hier: HTREEITEM parent
Jetzt wäre eine Funktion à la HTREEITEM FindRootItem("Raum1"); nicht schlecht
Gibt es sowas? Wie kann ich es selbst machen, wenns die Funktion noch net fertig gibt.
Bitte gebt mir einen Anhaltspunkt...
ciao para
[ Dieser Beitrag wurde am 25.04.2003 um 17:16 Uhr von paranoiac.org editiert. ]
-
Also hier mein Ansatz:
TV_ITEM tmpItem; char *szRoom; char *szUser; // seperate szRoom = strtok(szData, "|"); szUser = strtok(NULL , "|"); // search criteria tmpItem.mask = TVIF_PARAM | TVIF_TEXT; tmpItem.pszText = szRoom; tmpItem.lParam = 0; // get item TreeView_GetItem(GetDlgItem(hMainDlg, TREE_USER), &tmpItem); AddToTree(szUser, tmpItem.hItem, 0);
funktioniert aber nicht, waum?
ciao para
-
kA, aber vielleicht liegt es daran:
If the TVIF_TEXT flag is set in the mask member of the TVITEM or TVITEMEX structure, the pszText member must point to a valid buffer and the cchTextMax member must be set to the number of characters in that buffer.
-
Ich probiers mal, danke!
-
Also hier die Antwort:
// function to add a user to a room (treeview) void AddUserToRoom(char *szRoom, char *szUser) { // private HTREEITEM tiRoot; TV_ITEM tviTemp; TCHAR szBuf[LUNATIC_ROOMNAMELEN+1]; // get root item tiRoot = TreeView_GetRoot(hTreeWnd); // search criteria tviTemp.mask = TVIF_TEXT; tviTemp.hItem = tiRoot; tviTemp.pszText = szBuf; tviTemp.cchTextMax = sizeof(szBuf); // get first item TreeView_GetItem(hTreeWnd, &tviTemp); // search next items while(strcmp(tviTemp.pszText, szRoom)!=0){ tiRoot = TreeView_GetNextSibling(hTreeWnd, tiRoot); // search criteria tviTemp.mask = TVIF_TEXT; tviTemp.hItem = tiRoot; tviTemp.pszText = szBuf; tviTemp.cchTextMax = sizeof(szBuf); // get first item TreeView_GetItem(hTreeWnd, &tviTemp); } // result AddToTree(szUser, tiRoot, 0); }