CString in ein CListBox einfügen
-
Hallo Leutz,
folgendes Problem. Ich habe ein kleines Programm geschrieben um zu überprüfen, ob Punkte innerhalb eines Polygons liegen. Um das ganze ein bißchen grafisch zu unterstützen, nutze ich CListBox-Felder für die Anzeige der Ausgangspunkte, des Polygons und der Punkte im Polygon.
Zur Zeit nutze ich den Befehl "AddString", um den gültigen Punkt in das Ausgabefenster zu überführen.m_CLISTBOX_Points_out.AddString(aktueller_CString);
Da sieht die Anzeige auch völlig normal aus, z.B. so:
1.3 2.3 4
1.2 2.1 5
3.1 2.2 3
.....Findet der Algorithmus sehr viele Punkte, die im Polygon liegen, dauert das ganze sehr lange, da anscheinend jedesmal das ganze CListboxfeld neu beschrieben wird.
(Bin da nicht ganz sicher...)
Ich wollte es jetzt so machen, dass eine gültige Punktzeile als CString an ein anderes CString angehängt wird, welches dann zum Schluss an das CListBox übergeben wird. Also ungefähr so:
Ergebnis_CString.Append("\n" + aktueller_CString);
und nach Durchlauf aller Punkte
m_CLISTBOX_Points_out.AddString(Ergebnis_CString);Leider sind dann alle Punkte in einer Zeile. Das Returnzeichen bekomme ich als Quadrat wieder. Was kann ich da machen. Das CString "Ergebnis_CString" sieht im Debug-Modus völlig ok aus. Nur beim Schreiben in die CListBox bleibt alles in einer Zeile? Ist das irgendein Eigenschaftsbutton der CLIstBox???
-
Eine List box ist kein Edit control. Jede Zeile auswählbare Zeile ist ein eigenes item, mit eigem Text, eigene höhe, eigener farbe,... ein zeilumbruch da drinnen bingt dir also gar nix, da kannst dann auch gleich ein edit control nehmen.
-
Ähm, ehrlich gesagt hilft mir Deine Antwort nicht wirklich weiter. Wenn ich jede Zeile als einzelnes CString mit dem Befehl AddString hinzufüge, habe ich grundsätzlich ja kein Problem. Versuche ich dagegen vorher alle Zeilen in ein CString zu überführen habe ich zumindest in der Datenanzeige über das CListCtrl Probleme. Schaue ich mir dagegen im Debug-modus das CString mit allen Zeilen an, sieht es genauso aus, wie ich es haben will. Schön eine Koordiantenzeile nach der anderen. Es muss doch möglich sein, dieses CString dann auch so im CListCtrl anzuzeigen. Warum sollte ich ein EditCtrl nehmen? Die Koordinaten sollen doch nur angezeigt werden.
-
ein edit-feld kann die Daten so darstellen wie du es willst. dann machst du es halt schreibgeschützt, dann kann keiner dran rumbasteln
-
Wenn ich dich richtig verstanden habe, hast du einen String mit Zeilenumbrüchen drin. Deswegen sieht der auch richtig aus, wenn du ihn anguckst.
Eine Listbox kann aber nicht standardmäßig einen String an Trennzeichen zerlegen und dann einfügen. Das ist einfach nicht implementiert.
Bau es doch selber.Ist nicht schwer. Entweder baust du eine eigene Listbox, wenn du das an mehreren Stellen im Programm brauchst oder du modifizierst die Stelle, wo sie gefüllt wird.
Wie man einen String an Trennzeichen zerlegt findest du mit Hilfe der Suche. (Ich habs hier schon gelesen.)
-
Ok, ich werds mal mit dem EditCtrl probieren.