MFC Listelement mit Image

Don_Pazo

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

Code:
-------------------------------------
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:

Code:
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 ?
 
Das geht ganz normal mit
Code:
BOOL SetItem( const LVITEM* pItem );
oder
Code:
BOOL SetItem( int nItem, int nSubItem, UINT  nMask, LPCTSTR lpszItem, int nImage,  UINT nState, UINT nStateMask, LPARAM  lParam );
Den nImage-Parameter setzt Du auf den Index des gewünschten Biltes in der ImageList.
nSubItem ist die Nummer der Spalte ('0' wäre das Hauptitem, also die erste Spalte, '1' ist das erste Sub-Item, also die 2. Spalte usw.)
 
Das habe ich probiert. Ich bin aber mit UINT nMask, UINT nState, UINT nStateMask und LPARAM lParam nicht zurecht gekommen. Ich habe es gehofft, dass mir jemand sagt, was ds hin soll
Code:
BOOL SetItem( int nItem, int nSubItem, UINT  nMask, LPCTSTR lpszItem, int nImage,  UINT nState, UINT nStateMask, LPARAM  lParam );

Bitte damit komme ich nicht klar, wie geht es ?
 
nMask setzt Du auf LVIF_IMAGE, das bedeutet, daß nur der iImage-Parameter einen gültigen Wert enthält. die anderen Parameter werden ignoriert. nState, nStateMask undlParam kannst Du also auf 0 setzen. Den nImage-Parameter setzt Du dann auf den Index des entsprechenden Bildes in der ImageList.
Mit nState wird der Status des Items gesetzt, nStateMask bezeichnet, welche Statusbits gültig sind.
lParam ist ein frei verfügbarer Parameter, dessen Wert beim Item gespeichert wird und den du auch mit SetitemData(int nItem, DWORD dwData)setzen und mit GetItemData( int nItem ) wieder auslesen kannst.
Nähere Erklärungen im MSDN :).
 
Zurück