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 Zitieren
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. Zitieren
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. Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.