[C++ MFC] und wieder ein CListCtrl

sisela

Erfahrenes Mitglied
Hallo Leute,

ich habe eine Liste mit mehreren Images. Die ich so erstellt habe:
Code:
rCtrl.InsertItem(nItemCount, strOperationNameSymbol, nIdSymbol);
nIdSymbol ist dabei der Index einer CImageList in der ca. 16 pics sind.
So, die Liste ist nun voll und es gibt viele viele Zeilen mit jeweils unterschiedlichen Bildern. Ich möchte nun in dieser fertigen Liste eine Zeile mit einem bestimmten Bild suchen. Mein Problem ist aber das ich an das Bild nicht mehr herankomme! Ich kann ja den ItemText oder ItemData auslesen aber das nutzt mir nichts!
Nun habe ich noch GetImageList gefunden.

Code:
CImageList m_ImageList = listCtrl.GetImageList(nItem);

Aber auch hier bekomme ich aus meiner ImageList nicht den Index meines gesuchten Images. :(

Also falls mir jemand helfen kann?
danke
 
Dafür gibt's die den ganzen GetItemxxx-Funktionen zugrunde liegende GetItem( LVITEM* )-Funktion.

Ein Struct vom Typ LVITEM anlegen, die Maske auf LVIF_IMAGE setzen, sonst alles ausnullen, und aufrufen. Im iImage-Member steht dann der Index des Images in der ImageListe.
 
Hi endurion,
man auf dich ist echt verlass du hast mir ja schon unzählige Male geholfen. Dafür erst einmal Danke! :)
Also ich habe jetzt folgendes hinzugefügt:
Code:
LVITEM *lvItem;
lvItem->mask = LVIF_IMAGE;
listCtrl.GetItem(lvItem);

Danach steht aber in iImage = 1598738596; Sprich da stimmt irgendetwas nicht.
Kannst du mir mal ein kleines Beispiel posten?
Wäre echt nett.
Die anderen Werte in der LVITEM struct sehen übrigens ähnlich schrecklich aus. Habe ich das richtig verstanden, dass diese Struktur immer dann gefüllt wird, wenn ich getItemXXX aufrufe, oder?

mfg
und schönes WE...
 
Hab schon einen Verdacht, du hast da nur einen Zeiger benutzt, aber nichts, worauf der eigentlich zeigt. Und ich habe vergessen, dass der Index des Items eingesetzt werden muss.

Mach das so:

LVITEM lvItem;

memset( &lvItem, 0, sizeof( lvItem ) );

lvItem.mask = LVIF_IMAGE;
lvItem.iItem = ItemIndex;

listCtrl.GetItem( &lvItem );

Dann sollte es aber klappen :)

Falls du bei dir die Sourcen der MFC auch mit VS mit bekommen hast, da kann man reinsehen. Praktisch alle Get-Aufrufe der CListCtrl sind über dieses GetItem realisiert.
 
Zurück