Zum Inhalt springen

MFC: CListCtrl optimieren


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...