Tree



  • Original erstellt von <Teradio>:
    Du bist dumm
    lern coden
    debuggen
    coden

    selber 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??





  • 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
    |-Raum3

    Jetzt 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);
    }
    

Anmelden zum Antworten