MFC Listelement mit Image



  • Hallo,
    ich habe ein Dialog mit einem Listelement. Ich möchte so was ereichen:

    -------------------------------------
    Name    | Status   | Status  | Status 
    -------------------------------------
    Anna    |    G     |   GL    |    R     
    Mila    |    G     |   G     |    G     
    --------------------------------------
    

    Jeweils sind:
    G = Grün; GL = Gelb; R = Rot;
    Die Fargen habe ich als *.ico Dateien und sind auch in VC als IDR_GRUEN,
    IDR_GELB, IDR_ROT importiert.

    in On INITDIALOG habe ich:

    HICON  hIcon = NULL;
    
    // Create image list
    m_ImageList.Create(16, 16, NULL, 3, 1);
    
    // Add some icons
    hIcon = AfxGetApp()->LoadIcon(IDR_GRUEN);
    m_ImageList.Add(hIcon);
    
    hIcon = AfxGetApp()->LoadIcon(IDR_GELB);
    m_ImageList.Add(hIcon);
    
    hIcon = AfxGetApp()->LoadIcon(IDR_ROT);
    m_ImageList.Add(hIcon);
    
    m_List1.SetImageList(&m_ImageList,LVSIL_NORMAL); // von CListBox
    
        m_List1.InsertColumn(0, "Name" ,LVCFMT_LEFT, 100);
        m_List1.InsertColumn(1, "Status " ,LVCFMT_LEFT, 70);
    
        // Elemente einfügen
        m_List1.InsertItem(0, "Anna");
    
      // HIER WILL ICH DIE ICONEN INCLUDEN
    

    Meinem Problemm ist, ich weiss es nicht wie ich die Image´s in der Listelement schreiben kann. Könnte mir bitte jemand helfen ??



  • Mit Hilfe der Funktion SetItem kannst du ein Image hinzufügen.
    Diese funktion hat ein Parameter, der du eine Zahl übergibst. Anhand dieser Zahl gibst du das Bild aus der ImageList an. Übrigens hat die Funktion InsertItem ebenfalls diesen Parameter.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_clistctrl.3a3a.insertitem.asp



  • ExtendetStyle auf LVS_EX_SUBITEMIMAGES setzen

    int InsertItem(
    int nItem,
    LPCTSTR lpszItem,
    int nImage
    );

    setzt das "Row" mit ersten Eintrag.

    Und mit SetItem(...); kannst DU die SubItem setzen.

    Gruß



  • Ich verstehe nicht die Optionen UINT nMask, UINT nState, UINT nStateMask und LPARAM lParam von der Funktion SetItem.

    BOOL SetItem( int nItem, int nSubItem, UINT  nMask, LPCTSTR lpszItem, int nImage,  UINT nState, UINT nStateMask, LPARAM  lParam );
    

    Könnte mir jemand helfen bitte? Ein kleins Beispiel vieleicht.





  • Die Links kenne ich. Wenn ich die Beispiel aber verstehen konnte, hätte ich hier nich gefragt.

    Also könnte jemand bitte die UINT nMask, UINT nState, UINT nStateMask und LPARAM lParam von der Funktion SetItem bzw. InsertItem erleuretn.

    Danke schön.



  • nMask ist eine Bit-Maske und kennzeichnet, welche der nachfolgenden Parameter "gültig" sind - du brauchst an der Stelle den Wert LVIF_IMAGE.

    Mit nState und nStateMask änderst du den Status des Items (Fokussiert, Ausgewählt,...) - die kannst du auf 0 lassen.
    lParam ist ein interner Wert, der zur Sortierung verwendet wird - kann auch auf 0 stehen bleiben.
    (beide Werte werden nur angefasst, wenn nMask die Werte LVIF_STATE bzw. LVIF_PARAM enthält)

    PS: Eventuell hilft dir auch die Dokumentation zu LVITEM weiter - die Parameter von SetItem entsprechen den Elementen der struct.


Anmelden zum Antworten