Patrick.Karre Geschrieben 10. Januar 2008 Geschrieben 10. Januar 2008 Hallo Forum, ich habe ein CListCtrl und lade darin ca. 50.000 Einträge. Leider ist der Aufbau sehr langsam und ich frage mich, ob dies Optimiert werden kann. Nachfolgend seht Ihr meinen Code, mit dem ich das CListCtrl beschreibe: // Überschrift setzen for (int i=0; i<m_strColumnName.GetCount(); ++i) m_PersonalList.InsertColumn(i, m_strColumnName[i].GetString(), LVCFMT_LEFT, 500); // int iCounter = m_strListCtrl[i].GetCount(); int iCounter = m_strColumnName.GetCount(); // Liste mit Daten laden for (int i=0; i<m_strListCtrl.GetCount(); ++i) { this->m_PersonalList.InsertItem(i, m_strListCtrl[i][0].GetString()); for (int j=0; j<m_strListCtrl[i].GetCount(); ++j) this->m_PersonalList.SetItemText(i, j, m_strListCtrl[i][j].GetString()); } Weiterhin würde ich gerne immer den ersten Satz markieren und markiert lassen, wenn der Fokus verlassen wird, aber irgendwie will das auch nicht klappen. Nachfolgend mein Code: // Erste Zeile markieren if (this->m_PersonalList.GetSelectionMark() == -1) this->m_PersonalList.SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); Beste Grüße aus Gießen Patrick
TDM Geschrieben 10. Januar 2008 Geschrieben 10. Januar 2008 Weiterhin würde ich gerne immer den ersten Satz markieren und markiert lassen, wenn der Fokus verlassen wird, aber irgendwie will das auch nicht klappen. Nachfolgend mein Code: // Erste Zeile markieren if (this->m_PersonalList.GetSelectionMark() == -1) this->m_PersonalList.SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); Beste Grüße aus Gießen Patrick Ich glaube das geht nicht so einfach, wenn der Focus verlassen wird, nützt dir das bestimmt nichts. Aber du könntest dir den Index merken und wenn das Element wieder den Focus erhält, den Eintrag markieren.
Klotzkopp Geschrieben 10. Januar 2008 Geschrieben 10. Januar 2008 ich habe ein CListCtrl und lade darin ca. 50.000 Einträge. Leider ist der Aufbau sehr langsam und ich frage mich, ob dies Optimiert werden kann.Ja. Benutz ein virtuelles List Control. Virtual List Controls Weiterhin würde ich gerne immer den ersten Satz markieren und markiert lassen, wenn der Fokus verlassen wird, aber irgendwie will das auch nicht klappen.Die Auswahl eines List Controls wird vom Focus gar nicht beeinflusst. Allerdings zeigt das List Control seine Auswahl normalerweise nicht mehr an, wenn es den Focus verliert - es sei denn, du benutzt LVS_SHOWSELALWAYS.
Patrick.Karre Geschrieben 14. Januar 2008 Autor Geschrieben 14. Januar 2008 Hallo Zusammen, das mit der virtuellen Liste war eine Super Idee, dass CListCtrl ist jetzt richtig schnell. Danke und beste Grüße aus Gießen Patrick
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden