CListCtrl soll Imagelist erhalten
-
Mein CListCtrl will einfach kein Icon anzeigen.
Ich bin der Meinung alles richtig gemacht zu haben.
Das Icon in der entsprechenden Größe ist vorhanden und trägt auch
diese Bezeichnung (IDI_ICON1).xx ist die Membervariable vom CListControl.
Code in OnInitDialog():
CImageList m_imagelist; m_imagelist. Create ( 16, 16, TRUE, 4, 4 ); m_imagelist . Add ( ::LoadIcon ( AfxGetInstanceHandle (),MAKEINTRESOURCE ( IDI_ICON1 ) ) ); xx . SetImageList ( &m_imagelist, LVSIL_SMALL ); xx.InsertItem(xx.GetItemCount(),"test" ,0);
-
Ich habe vergessen zu erwähnen, dass sich der Quellcode am Beispiel der
FAQ orientiert:http://www.c-plusplus.net/forum/viewtopic-var-t-is-39115-and-highlight-is-setimagelist.html
-
Der Beitrag in den FAQ funktioniert offenbar nicht mehr

-
Kunibert schrieb:
Der Beitrag in den FAQ funktioniert offenbar nicht mehr

Wenn wirklich das hier
CImageList m_imagelist;in deiner OnInitDialog steht, dann funktioniert der Code durchaus. Vielleicht solltest du nur sorgfältiger lesen ;).
-
Es steht alles in OnInitDialog

-
Um MIssverständnisse zu vermeiden:
Ich habe sogar das ganze Beispiel rüberkopiert und mal komplett
unverändert gelassen!Es erscheint ein leeres Feld vor dem Text in Größe des Icon.
Ja, das Icon ist sogar in ALLEN Größen definiert.Ich raff das einfach nicht.

-
Nur um sicher zu gehen, zeihe im diesen Code mal auseinander:
m_imagelist . Add ( ::LoadIcon ( AfxGetInstanceHandle (),MAKEINTRESOURCE ( IDI_ICON1 ) ) );Anmerkung: Wer auch imer diesen Code geschrieben hat AfxGetInstanceHandle ist falsch. Hier muss AfxGetResourceHandle verwendet werden!
Besser einfach CWinApp::LoadIcon verwenden!
m_imagelist . Add ( AfxGetApp()->LoadIcon(IDI_ICON1) );
-
Kunibert schrieb:
Es steht alles in OnInitDialog

Und genau das ist falsch.
Was sagt dir das "m_" bei m_imagelist?
-
Der Destruktor zerstört die Image-List am Ende von OnInitDialog!
Du kannst einen m_imageList.Detach() machen! Das ist legal. Die Image-List wird dann zerstört wenn das ListCtrl zerstört wird.