Tree



  • Mit dieser Funktion tu ich ein Item hinzufügen.
    Aber immer so:
    AddRoomToList(..., "Raum X", 0, 0);
    Sind also alles root.

    // function to add a room
    HTREEITEM AddRoomToList(HWND hTreeWnd, LPSTR lpszItem, HTREEITEM ItemParent, HTREEITEM ItemBrother)
    {
        // private
        TV_ITEM             tvi;
        TV_INSERTSTRUCT     tvins;
    
        tvi.mask = TVIF_TEXT;
        tvi.pszText = lpszItem;
        tvi.cchTextMax = lstrlen(lpszItem);
    
        tvins.item = tvi;
    
        if(ItemBrother)tvins.hInsertAfter = ItemBrother;else tvins.hInsertAfter = TVI_FIRST;
        if(hTreeWnd)tvins.hParent = ItemParent; else tvins.hParent = TVI_ROOT;
        return((HTREEITEM)SendMessage(hTreeWnd, TVM_INSERTITEM, 0, (LPARAM)&tvins));
    }
    

    Dann hab ich sowas inder Art:

    |Raum1
    |Raum2
    |Raum3
    

    Jetzt brauch ich eine Funktion, bei der ich sagen könnte "füge da den String hinzu, wo der Raum == Raum1 ist"

    Sprich ich brauche eine Funktion die mir, bei der Listbox war das Findstring (oder so), den Index oder so des Items gibt, der den Text "xyz" hat.

    Wie mache ich das?

    danke!

    cu para
    😃



  • [Frechheit]schieb[/Frechheit]

    n8



  • Du bist dumm
    lern coden
    debuggen
    coden



  • 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