CListCtrl::SetItem() funzt nicht so... kann mir jemand bitte helfen :-)



  • Hi,
    ich möchte ein Icon von nem Item in einer CListCtrl verändern.
    Dazu habe ich folgendes ausprobiert nur leider klappt das nicht so richtig...

    Hier mein code:

    LVITEM lvItem;
    
    m_ListCtrl.GetItem(&lvItem);
    
    lvItem.mask = LVIF_IMAGE;
    lvITem.iImage = 1;    // andere iconimage in der imageliste der ListCtrl
    
    m_ListCtrl.SetItem(&lvItem);
    

    die ::GetItem Méthode gibt auch ein false zurück...

    kann mir jemand sagen was ich falsch mache? oder nicht mache?

    Vielen Dank im voraus,
    euer
    T1c4L 👍



  • Du musst die LVITEM-Struktur vor dem Aufruf von GetItem initialisieren, d.h. alles auf 0 setzen und dann iItem und mask setzen. Woher soll GetItem sonst wissen, welches Item du haben willst?



  • vielen dank schonmal

    ich habe die Variablen auf NULL gesatzt und die mask gesetzt und zwar so:

    MeinLVItem.mask = LVIF_IMAGE | LVIF_TEXT;
    

    jetzt liefert die methode mir ein true zurück allerdings wenn ich das iImage änder und SetItem ausführe dann wird mein icon verändert allerdings fehlter ItemText.....

    hast du hier auch Rat? 🙂
    danke sehr schonmal

    T1c4L



  • Ich habe noch nicht verstanden, warum du überhaupt GetItem aufrufst. Warum willst du das Image und den Text auslesen? Wenn du nur das Image ändern willst, musst du das nicht machen.



  • http://c-plusplus.net/forum/viewtopic.php?t=54324

    Dort steht unteranderem wie du Images in einer Listbox darstellst.

    Devil



  • nur das image wechseln

    wenn ich SetITem benutzt mit dem zurückgelieferten LVITEM dann updatet er das image in der List allerdings verschwindet der Text...



  • T1c4L schrieb:

    nur das image wechseln

    Dann brauchst du GetItem nicht.

    Es reicht, wenn du eine "genullte" LVITEM-Instanz anlegst, mask auf LVIF_IMAGE setzt, iImage auf den Index des Image in der ImageList und iItem auf den Index des Items, dessen Image du ändern willst.

    Dann SetItem und gut ist.


Anmelden zum Antworten