CListCtrl stürtz bei InsertItem ab



  • Wenn ich mein CListCtrl fülle strützt das ab und zu mal ab.

    Mein Code:

    m_CtrlMeineListe.DeleteAllItems();
    HTREEITEM LastItem = NULL;
    
    for(int nI = 0; nI < 100; nI++)
    {
    	LastItem = m_CtrlMeineListe.InsertItem(TVIF_TEXT, "Test1", NULL, NULL, NULL, NULL, nI, NULL, NULL );
    
    	for(int nJ = 0; nJ < 100; nJ++)
    		m_CtrlMeineListe.InsertItem(TVIF_TEXT, "Test2", NULL, NULL, NULL, NULL, nJ, LastItem, NULL );
    
    }
    

    Hat einer eine Idee wie so?



  • k ich habe das mal so gemacht

    m_CtrlMeineListe.DeleteAllItems();
    
    for(int nI = 0;nI < 100;nI++)
    {
       TVINSERTSTRUCT temp;
       temp.hParent = TVI_ROOT;
       temp.hInsertAfter = TVI_SORT; //wenn dus sortiert haben willst
       temp.item.mask = TVIF_TEXT;
       temp.item.pszText = "Der Text der sein soll";
       HTREEITEM _Root = m_CtrlMeineListe.InsertItem (&temp );
    
       for(int nJ = 0;nJ < 100;nJ++)
          m_CtrlMeineListe.InsertItem("Der Text",_Root,TVI_SORT);
    }
    

    so funktioniert das bei mir ohne probleme
    und ich glaube das ist auch besser lesbar als dein code 🙂

    ich hoffe das hilft dir

    mfg
    wuschu



  • oops sorry, kann jemand eines des doppelpostings loeschen?



  • Isset ne Liste oder ein Baum?



  • da du ein HTREEITEM verwendes denke ich ist das bei dir auch ein baum

    ist die variable m_CtrlMeineListe ein CTreeCtrl oder ein CListBox.
    wenn es ein CTreeCtrl ist dan hast du einen Baum bei CListBox eine normale ListBox

    aber bei einer normalen ListBox kannst du einfach mit InsertString arbeiten

    also zb

    m_CtrlMeineListe.InsertString("stelle wo eingefuegt werden soll als int","string der eingefuergt werden soll");
    

    was hast du verwendet?

    mfg
    wuschu



  • ooh sorry jetzt hab ich an dier vorbeigeredet 🕶
    dein HTREEITEM hatt mich ein bisschen verwirrt.
    wenn du ein CListCtrl hasst würde ich das mit

    int InsertItem(
       int nItem,
       LPCTSTR lpszItem 
    );
    
    also zb
    
    m_CtrlMeineListe.InsertItem(1,"test");
    

    machen

    ist doch viel einfacher als so mit den ganzen parametern.
    jetzt hab ich 3 antworten auf das problem gegeben ich denke ich hoffe eine passt 🙂 🙂


Anmelden zum Antworten