JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=4f5b056be59f29d0506d0da4e583a49bMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Problem mit ListView-Items...

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
RebornX
JLI'ler



Anmeldedatum: 16.03.2007
Beiträge: 169

Medaillen: Keine

BeitragVerfasst am: 10.11.2007, 09:19    Titel: Problem mit ListView-Items... Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 10.11.2007, 15:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
RebornX
JLI'ler



Anmeldedatum: 16.03.2007
Beiträge: 169

Medaillen: Keine

BeitragVerfasst am: 10.11.2007, 15:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 10.11.2007, 16:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
RebornX
JLI'ler



Anmeldedatum: 16.03.2007
Beiträge: 169

Medaillen: Keine

BeitragVerfasst am: 10.11.2007, 16:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum