SysListView32
-
Ich bräuchte in einem Tool von mir so eine Liste, die zb. der Taskmanager hat. Also mit Listen-Kopf.
Die Listen-Köpfe krieg ich zwar mit ListView_InsertColumn rein, aber ich krieg die Items mit ListView_InsertItem nicht in die Liste rein. Ich hab das auch schon ohne Listen-Köpfe probiert, geht aber auch nicht.
Kann mir jemand helfen?
Funktion um Listen-Kopf einzufügen:
void AddListHead( LPSTR lpText, int iWidgh ) { static int Counter; Counter++; LVCOLUMN lvc; lvc.mask = LVCF_TEXT; lvc.cx = iWidgh; lvc.pszText = lpText; lvc.cchTextMax = 255; ListView_InsertColumn( ::hWindow, Counter, &lvc ); }
-
Hast Du das ListCtrl auch im "Report-Style" (LVS_REPORT) !?
Siehe auch: Adding Columns to the Control (Report View)
http://msdn.microsoft.com/library/en-us/vccore/html/_core_Adding_Columns_to_the_Control_.28.Report_View.29.asp
-
Ich benutze ja nicht die MFC. Die Liste hat die Fensterklasse "SysListView32". Und die Listen-Köpfe einfügen kann ich ja schon aber ich weiß nicht wie ich die Items einfügen kann.
-
Ja dann poste doch mal den Code, wie die die LVITEM Struktur initialisiert und sie dann einfügst...
-
hmm normaler weise fügt man ein Item ein, womit aber nur der Text in der erstsen Columne gesetzt wird... dann musst de mit SetItemText noch für die anderen Subitem des Items(also für die anderen Columnen) noch den text setzten..
-
Also, hier ist der Code mit dem ich ein Item einfügen will:
void AddListItem( LPSTR lpText ) { LVITEM lv; lv.mask = LVIF_TEXT; lv.pszText = lpText; lv.cchTextMax = 255; ListView_InsertItem( ::hListView, &lv ); }
Dabei kommt aber nicht viel raus, um genau zu sein: gar nichts. Und das mit SetItemText() ist schon wieder MFC.
-
1. Du solltest Dir angewöhnen die Srukture zuerst mal richtig zu initialisieren (in diesem Fall einfach mit ZeroMemory oder mit = {0})
2. Es gibt Millionen von Beispielen wie man es richtig macht... z.B.
http://www.willemer.de/informatik/windows/winlistv.htm#insertitem