Inhalt Listbox in Datei speichern
-
Hallo,
Ich habe hier eine kleines Problem mit einer Listbox.
Und zwar:Die Listbox wird mittels LB_ADDSTRING mit Zeichenketten zeilenweise
gefüllt.
Über LB_GETTEXT und GETTEXTLEN bekomme ich die nötigen Informationen
zum Abspeichern in einen Puffer bevor alles in eine Datei geschrieben
wird.
Geschrieben wird auch etwas, allerdings immer nur der erste String.
Mit LB_GETCURSEL bekomme ich zwar die aktuelle Auswahl, ich möchte
aber, dass immer alle Strings gespeichert werden und auch in der
Form, wie sie in der Listbox stehen (zeilenweise).Wie hole ich den gesamten Inhalt der Listbox da heraus?
Und bevor jetzt wieder einige anfangen: Ja, ich habe bereits Google, MSDN und Codeproject.com bemüht. Etwas, das in meine Richtung geht, habe ich leider (noch) nicht gefunden.
-
Ich weiß ja nicht wie du die MSDN bemühst, aber ich habe das hier nach 2 Sekunden gefunden.
MSDN schrieb:
LB_GETTEXT Message
MSDN schrieb:
wParam
The zero-based index of the string to retrieve.
-
Ja, gut soweit war ich auch schon. Wenn ich das richtig verstehe, kann ich damit gezielt einzelne Einträge rausholen.
Aber wie bekomme ich denn nun ALLE Strings aus der Box?
Oder anders gefragt, wie ermittele ich wieviele Strings drin sind. (Dann kann ich das Ganze iterativ machen, sehe ich ja ein.)
[edit]
Ja,ja GetListBoxInfo ist mein Freund.

-
LB_GETCOUNT
-
Aha, werde ich gleich mal testen. Die Variante mit GetListBoxInfo() krankt im Moment daran, dass der Compiler es als nicht deklarierten Bezeichner bemängelt.
-
Ich habe mein Programm jetzt um die gewünschte Funktionalität erweitert.
void ReadOutAndSave(HWND hWnd) { FILE *fOutFile; char *cWriteBuffer = NULL; int iItemIndex = 0; int iItemStrLen = 0; char szTermStr[] = "\r\n"; iItemIndex = SendMessage(hWnd, LB_GETCOUNT, 0, 0); for(int i=0; i < iItemIndex; i++) { fOutFile = fopen("Testext.txt", "a+b"); iItemStrLen = SendMessage(hWnd, LB_GETTEXTLEN, i, 0); cWriteBuffer = (char*)malloc((iItemStrLen) * sizeof(char)); SendMessage(hWnd, LB_GETTEXT, i, (DWORD) ((LPSTR) cWriteBuffer)); fwrite(cWriteBuffer, 1, iItemStrLen, fOutFile); fclose(fOutFile); fOutFile = fopen("Testext.txt", "a+b"); fwrite(szTermStr, 1, 3, fOutFile); fclose(fOutFile); } }Allerdings scheint mir diese Art des Zeilenumbruches etwas umständlich. Weiß jemand eine bessere Möglichkeit?