CListCrtl in Dialog
-
Hallo
hab da eine für mich unerklärliche Sache:
Ich habe in einem Projekt einen Dialog hinzugefügt in welchen ich dann eine ListCrtl eingefügte. Danach erstellte ich eine Klasse für den Dialog und fügte für die ListCrtl eine Variable hinzu.
Nun kann ich aber nur bei OnInitDialog() und nur in der ersten Spalte etwas einfügen. Ich hab auch noch eine Methode in der für den Dialog erstellten Klasse gemacht, mit welcher ich etwas einfügen möchte:
void CBerechnungsAusgabe::ausgabe_einfuegen(char* objekt, char* beschrieb, char* kraft) { this->m_berechnungsausgabeliste.InsertItem(i,_T(objekt)); this->m_berechnungsausgabeliste.SetItemText(i,2,beschrieb); this->m_berechnungsausgabeliste.SetItemText(i,3,kraft); i++; }
Das geht aber nicht! Weshalb?
gruss nicco
PS: ich habs auch mit einer ListBox probiert, geht aber auch nicht?
-
Schau dir das mal an: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39115.html
Außerdem: Denk dran, das hier ist C(++), man fängt bei 0 an zu zählen.
-
Benutz statt char* lieber CString.
Und schau mal in Faq, da steht sehr viel zu CListCtrl.
-
ops, das mit Null hatte ich vergessen -> kann jetzt in OnInitDialog() eine ganze Zeile einfügen. Doch wenn ich die Methode in der Klasse, in der ich das Objekt generiere (CBlablaView) , aufrufe, geht es nicht?!?
gruss nicco
Edit:
es kommt die Fehlermeldung bei der Ausführung:
Debug Assertion Failed!
die geänderte methode:
void CBerechnungsAusgabe::ausgabe_einfuegen(CString objekt, CString beschrieb, CString kraft) { this->m_berechnungsausgabeliste.InsertItem(i,_T(objekt)); this->m_berechnungsausgabeliste.SetItemText(i,1,beschrieb); this->m_berechnungsausgabeliste.SetItemText(i,2,kraft); i++; }
ich mach das so:
CBerechnungsAusgabe dlg; dlg.ausgabe_einfuegen("bla","blabla","bla"); dlg.DoModal();
vielen dank für die hilfe
-
OnInitDlg wird erst nach DoModal ausgeführt...
Also gibts dein ListCtrl noch garnicht bei ausgabe_einfügen...
-
gut zu wissen, danke.
wie kann ich dann diese CListCrtl füllen? geht das nur OnInitDlg()?
vielen dank für die hilfe.
gruss nicco
-
Das geht nur in oder nach OnInitDialog. (eben nach CDialog::OnInitDialog();)
Du kannst ja dem Dialog die Daten, die da rein sollen mitgeben.