Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

1

25.06.2014, 18:12

Problem mit ListBox Programmierung

Hallo zusammen

Ich hänge seit tagen vor einem Problem. Ich habe einen Dialog, mit einer Listbox. Diese Listbox beinhaltet Einträge.
Mann kann der Listbox während Programmlauf Einträge hinzufügen und Löschen.

Die Liste wird also bei neuen Einträgen aktualisiert.

Dazu muss die Liste gelehrte werden und neu erstellte werden.

Jedoch habe ich Probleme die Liste zu lehren.

C-/C++-Quelltext

1
2
3
4
    for(int i = 0; i < i_NumOldObj; i++)
    {
    SendDlgItemMessage(gp_Main->MainWin,IDC_OBJ_LIST, LB_DELETESTRING, i, NULL); 
    }

Ich habe den wert von i_NumOldObj geprüft. alles korrekt.
Wenn ich das so mache, werden komischer weiße nicht alle Einträge gelöscht. Wie Geht das richtig?

Danke im Voraus

2

25.06.2014, 18:22

Sende die Nachricht LB_RESETCONTENT and die Listbox zum löschen aller Einträge.
Allerdings wäre es doch schlauer, den gewählten eintrag direkt zu löschen und nicht alles auf einmal ;)

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

3

26.06.2014, 14:50

Ich weiß. ich optimiere es später noch.

Danke

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

26.06.2014, 15:10

Jedoch habe ich Probleme die Liste zu lehren.
Wenn ich das so mache, werden komischer weiße nicht alle Einträge gelöscht. Wie Geht das richtig?

Du meinst "leeren", nicht "lehren".
Du meinst "...weise", nicht "...weiße".

Warum es nicht funktioniert?
Sobald du das erste Element löschst, rücken alle folgenden Elemente um eine Position zurück, um die Lücke zu füllen.
Da du als Nächstes das zweite Element löschst, wird das nachgerückte Element verschont.
Ingesamt bleibt somit jedes zweite Element übrig.

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

5

26.06.2014, 16:52

Du könntest auch von hinten anfangen zu löschen:

C-/C++-Quelltext

1
2
3
4
for(int i = i_NumOldObj; i >= 0; i--)
{
     SendDlgItemMessage(gp_Main->MainWin,IDC_OBJ_LIST, LB_DELETESTRING, i, NULL); 
}
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Werbeanzeige