|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
RebornX JLI'ler
Anmeldedatum: 16.03.2007 Beiträge: 169
Medaillen: Keine
|
Verfasst am: 10.11.2007, 09:19 Titel: Problem mit ListView-Items... |
|
|
Hi,
ich hab ein kleines Problem mit listview:
Code: | struct ITEMS
{
char iItem[20];
};
ITEMS items[] =
{
{"Text1"},
{"Text2"},
{"Text3"}
};
int CreateItem(HWND hwndList, ITEMS *itm, int iCol)
{
LVITEM lvi;
for(int i = 0; i < iCol ; i++)
{
lvi.mask = LVIF_TEXT;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.pszText = itm[i].iItem;
ListView_InsertItem(hwndList, &lvi);
};
return iCol;
} |
Ich habe 3 Spalten^^
Aber ich will, dass alle 3 Items nebeneinander stehen (in jede Spalte ein)
I-wo habe ich da einen denkfehler ... -.- _________________ Besucht meine Seite:
www.cpparchiv.dl.am |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 10.11.2007, 15:30 Titel: |
|
|
ein item steht immer für eine neue Zeile. Dein Problem ist, dass du 3 versch., voneinander unabhängige Items nacheinander einfügst. Du musst ein Item erzeugen und zu diesem die versch. Spalten zuordnen. Am besten schaust du einfach mal in der MSDN
Gruß DXer |
|
Nach oben |
|
|
RebornX JLI'ler
Anmeldedatum: 16.03.2007 Beiträge: 169
Medaillen: Keine
|
Verfasst am: 10.11.2007, 15:48 Titel: |
|
|
hmm ok jetzt habe ich iItem in 0 und iSubItem in i geändert, dh. das er jetzt immer die erste Zeile durchnimmt, aber nur die Spalten-Nummer bei jedem Durchgang um 1 erhöht (bis 3)
Aber jetzt wird immernoch nur in der ersten Spalte was reingeschrieben^^
http://www.imagespell.com/show.php?id=c1792cb3bd01ead3a1707ad12cc606d3.jpg
Code: | int CreateItem(HWND hwndList, ITEMS *itm, int iCol)
{
LVITEM lvi;
for(int i = 0; i < iCol ; i++)
{
lvi.mask = LVIF_TEXT;
lvi.iItem = 0;
lvi.iSubItem = i;
lvi.pszText = itm[i].iItem;
ListView_InsertItem(hwndList, &lvi);
};
return iCol;
} |
msdn habe ich schon mehr als einmal durchgenommen ... aber irgendwie nichts hilfreiches gefunden oder irgendwas übersehn -.- _________________ Besucht meine Seite:
www.cpparchiv.dl.am |
|
Nach oben |
|
|
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 10.11.2007, 16:07 Titel: |
|
|
Mit InsertItem(..) fügst du eine Zeile und somit das erste Element hinzu. Um weitere Elemente in die gleiche Zeile hinzufügen, muss du SetItem verwenden.
Code: | item.iItem= deine_zeile;
item.iSubItem=0;
item.pszText= "spalte1";
int itemNr= m_list.InsertItem(&item);
item.iItem=itemNr;
item.iSubItem=1;
item.pszText= "spalte2";
m_list.SetItem(&item);
item.iItem=itemNr;
item.iSubItem=2;
item.pszText= "spalte3";
m_list.SetItem(&item); |
so geht es zumindest mit MFC, mit winapi muss genauso gehen, also schau dir mal ListView_SetItem an |
|
Nach oben |
|
|
RebornX JLI'ler
Anmeldedatum: 16.03.2007 Beiträge: 169
Medaillen: Keine
|
Verfasst am: 10.11.2007, 16:34 Titel: |
|
|
Juhu!! Es klappt!!
Ich habe zwei Versionen:
Einmal so:
Code: | void CreateItem(HWND hwndList, ITEMS *itm, int iCol)
{
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.pszText = itm[0].iItem;
ListView_InsertItem(hwndList, &lvi);
for(int i = 0; i < iCol ; i++)
{
lvi.iItem=0;
lvi.iSubItem=i;
lvi.pszText = itm[i].iItem;
ListView_SetItem(hwndList, &lvi);
};
} |
und einmal so:
Code: |
void CreateItem(HWND hwndList, ITEMS *itm, int iCol)
{
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.pszText = itm[0].iItem;
ListView_InsertItem(hwndList, &lvi);
for(int i = 0; i < iCol ; i++)
{
ListView_SetItemText(hwndList, 0, i, itm[i].iItem);
};
} |
Beide funktionieren einwandfrei^^
Ich denk mal die erste Lösung ist besser weil msdn die zweite nur als Alternative vorgeschlagen hat ^^
thx _________________ Besucht meine Seite:
www.cpparchiv.dl.am |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|